WEKO3
アイテム
{"_buckets": {"deposit": "a94867f0-cba9-4ca5-b362-e2418b3bd91d"}, "_deposit": {"id": "27968", "owners": [], "pid": {"revision_id": 0, "type": "depid", "value": "27968"}, "status": "published"}, "_oai": {"id": "oai:tsukuba.repo.nii.ac.jp:00027968", "sets": ["1945", "1845"]}, "item_5_biblio_info_6": {"attribute_name": "書誌情報", "attribute_value_mlt": [{"bibliographicIssueDates": {"bibliographicIssueDate": "2011-11", "bibliographicIssueDateType": "Issued"}, "bibliographicIssueNumber": "6", "bibliographicPageEnd": "662", "bibliographicPageStart": "617", "bibliographicVolumeNumber": "21", "bibliographic_titles": [{"bibliographic_title": "Journal of functional programming"}]}]}, "item_5_creator_3": {"attribute_name": "著者別名", "attribute_type": "creator", "attribute_value_mlt": [{"creatorNames": [{"creatorName": "亀山, 幸義"}], "nameIdentifiers": [{"nameIdentifier": "665", "nameIdentifierScheme": "WEKO"}, {"nameIdentifier": "10195000", "nameIdentifierScheme": "e-Rad", "nameIdentifierURI": "https://nrid.nii.ac.jp/ja/nrid/1000010195000"}, {"nameIdentifier": "0000000936", "nameIdentifierScheme": "筑波大学研究者総覧", "nameIdentifierURI": "http://trios.tsukuba.ac.jp/researcher/0000000936"}]}]}, "item_5_description_4": {"attribute_name": "抄録", "attribute_value_mlt": [{"subitem_description": "It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators.\n\nTwo pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity: An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound.\n\nWe introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator\u0027s effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style.", "subitem_description_type": "Abstract"}]}, "item_5_identifier_34": {"attribute_name": "URI", "attribute_value_mlt": [{"subitem_identifier_type": "HDL", "subitem_identifier_uri": "http://hdl.handle.net/2241/117931"}]}, "item_5_publisher_27": {"attribute_name": "出版者", "attribute_value_mlt": [{"subitem_publisher": "Cambridge University Press"}]}, "item_5_relation_11": {"attribute_name": "DOI", "attribute_value_mlt": [{"subitem_relation_type_id": {"subitem_relation_type_id_text": "10.1017/S0956796811000256", "subitem_relation_type_select": "DOI"}}]}, "item_5_rights_12": {"attribute_name": "権利", "attribute_value_mlt": [{"subitem_rights": "© Cambridge University Press 2011"}]}, "item_5_select_15": {"attribute_name": "著者版フラグ", "attribute_value_mlt": [{"subitem_select_item": "publisher"}]}, "item_5_source_id_7": {"attribute_name": "ISSN", "attribute_value_mlt": [{"subitem_source_identifier": "0956-7968", "subitem_source_identifier_type": "ISSN"}]}, "item_5_source_id_9": {"attribute_name": "書誌レコードID", "attribute_value_mlt": [{"subitem_source_identifier": "AA10742070", "subitem_source_identifier_type": "NCID"}]}, "item_5_subject_20": {"attribute_name": "NIIサブジェクト", "attribute_value_mlt": [{"subitem_subject": "情報学", "subitem_subject_scheme": "Other"}]}, "item_creator": {"attribute_name": "著者", "attribute_type": "creator", "attribute_value_mlt": [{"creatorNames": [{"creatorName": "KAMEYAMA, YUKIYOSHI"}], "nameIdentifiers": [{"nameIdentifier": "96769", "nameIdentifierScheme": "WEKO"}]}, {"creatorNames": [{"creatorName": "KISELYOV, OLEG"}], "nameIdentifiers": [{"nameIdentifier": "96770", "nameIdentifierScheme": "WEKO"}]}, {"creatorNames": [{"creatorName": "SHAN, CHUNG-CHIEH"}], "nameIdentifiers": [{"nameIdentifier": "96771", "nameIdentifierScheme": "WEKO"}]}]}, "item_files": {"attribute_name": "ファイル情報", "attribute_type": "file", "attribute_value_mlt": [{"accessrole": "open_date", "date": [{"dateType": "Available", "dateValue": "2013-12-25"}], "displaytype": "detail", "download_preview_message": "", "file_order": 0, "filename": "JFP_21-6.pdf", "filesize": [{"value": "1.4 MB"}], "format": "application/pdf", "future_date_message": "", "is_thumbnail": false, "licensetype": "license_free", "mimetype": "application/pdf", "size": 1400000.0, "url": {"label": "JFP_21-6.pdf", "url": "https://tsukuba.repo.nii.ac.jp/record/27968/files/JFP_21-6.pdf"}, "version_id": "72e202f5-b78f-49fa-89ab-ea91fe6a42e2"}]}, "item_language": {"attribute_name": "言語", "attribute_value_mlt": [{"subitem_language": "eng"}]}, "item_resource_type": {"attribute_name": "資源タイプ", "attribute_value_mlt": [{"resourcetype": "journal article", "resourceuri": "http://purl.org/coar/resource_type/c_6501"}]}, "item_title": "Shifting the stage Staging with delimited control", "item_titles": {"attribute_name": "タイトル", "attribute_value_mlt": [{"subitem_title": "Shifting the stage Staging with delimited control"}]}, "item_type_id": "5", "owner": "1", "path": ["1945", "1845"], "permalink_uri": "http://hdl.handle.net/2241/117931", "pubdate": {"attribute_name": "公開日", "attribute_value": "2012-11-20"}, "publish_date": "2012-11-20", "publish_status": "0", "recid": "27968", "relation": {}, "relation_version_is_last": true, "title": ["Shifting the stage Staging with delimited control"], "weko_shared_id": 5}
Shifting the stage Staging with delimited control
http://hdl.handle.net/2241/117931
http://hdl.handle.net/2241/117931b5bcc2f3-f8e7-43e0-8575-0fb2ade8b5a5
名前 / ファイル | ライセンス | アクション |
---|---|---|
JFP_21-6.pdf (1.4 MB)
|
|
Item type | Journal Article(1) | |||||
---|---|---|---|---|---|---|
公開日 | 2012-11-20 | |||||
タイトル | ||||||
タイトル | Shifting the stage Staging with delimited control | |||||
言語 | ||||||
言語 | eng | |||||
資源タイプ | ||||||
資源 | http://purl.org/coar/resource_type/c_6501 | |||||
タイプ | journal article | |||||
著者 |
KAMEYAMA, YUKIYOSHI
× KAMEYAMA, YUKIYOSHI× KISELYOV, OLEG× SHAN, CHUNG-CHIEH |
|||||
著者別名 |
亀山, 幸義
× 亀山, 幸義 |
|||||
抄録 | ||||||
内容記述タイプ | Abstract | |||||
内容記述 | It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity: An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound. We introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator's effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style. |
|||||
書誌情報 |
Journal of functional programming 巻 21, 号 6, p. 617-662, 発行日 2011-11 |
|||||
ISSN | ||||||
収録物識別子タイプ | ISSN | |||||
収録物識別子 | 0956-7968 | |||||
書誌レコードID | ||||||
収録物識別子タイプ | NCID | |||||
収録物識別子 | AA10742070 | |||||
DOI | ||||||
識別子タイプ | DOI | |||||
関連識別子 | 10.1017/S0956796811000256 | |||||
権利 | ||||||
権利情報 | © Cambridge University Press 2011 | |||||
著者版フラグ | ||||||
値 | publisher | |||||
出版者 | ||||||
出版者 | Cambridge University Press | |||||
URI | ||||||
識別子 | http://hdl.handle.net/2241/117931 | |||||
識別子タイプ | HDL |