首页 > 最新文献

Journal of Functional Programming最新文献

英文 中文
PhD Abstracts 博士论文摘要
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-12-23 DOI: 10.1017/S0956796822000144
G. Hutton
The λ -calculus is considered the paradigmatic model for functional programming languages, and it is based on a rewriting mechanism. It comes with a beautiful mathematical theory, which has been studied and improved for more than 80 years. Rewriting expressions is common in computer science, but it is not the way in which programs are executed by the hardware. While the semantics of programs remains unaltered during compilation, the use of resources, in particular time and space, is more difficult to track. Slot and van Emde Boas Invariance Thesis states some requirements for a computational model to be reasonable . The rationale is that under the Invariance Thesis, complexity classes such as LOGSPACE and PTIME, become robust, i.e
λ-演算被认为是函数式编程语言的典范模型,它基于重写机制。它带来了一个美丽的数学理论,经过80多年的研究和改进。重写表达式在计算机科学中很常见,但它不是硬件执行程序的方式。虽然程序的语义在编译过程中保持不变,但资源的使用,特别是时间和空间,更难跟踪。Slot和van-Emde-Boas不变性命题提出了计算模型合理的一些要求。其原理是,在不变命题下,复杂度类(如LOGSPACE和PTIME)变得稳健,即
{"title":"PhD Abstracts","authors":"G. Hutton","doi":"10.1017/S0956796822000144","DOIUrl":"https://doi.org/10.1017/S0956796822000144","url":null,"abstract":"The λ -calculus is considered the paradigmatic model for functional programming languages, and it is based on a rewriting mechanism. It comes with a beautiful mathematical theory, which has been studied and improved for more than 80 years. Rewriting expressions is common in computer science, but it is not the way in which programs are executed by the hardware. While the semantics of programs remains unaltered during compilation, the use of resources, in particular time and space, is more difficult to track. Slot and van Emde Boas Invariance Thesis states some requirements for a computational model to be reasonable . The rationale is that under the Invariance Thesis, complexity classes such as LOGSPACE and PTIME, become robust, i.e","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-12-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"49640448","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Send to me first: Priority in synchronous message-passing 先发送给我:同步消息传递的优先级
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-12-22 DOI: 10.1017/S0956796822000119
Cheng-En Chuang, Grant Iraci, Lukasz Ziarek
Abstract In this paper, we introduce a tiered-priority scheme for a synchronous message-passing language with support for selective communication and first-class communication protocols. Crucially, our scheme allows higher priority threads to communicate with lower priority threads, providing the ability to express programs that would be rejected by classic priority mechanisms that disallow any (potentially) blocking interactions between threads of differing priorities. We formalize our scheme in a novel semantic framework featuring a collection of actions to represent possible communications. Utilizing our formalism, we prove several important and desirable properties of our priority scheme. We also provide a prototype implementation of our tiered-priority scheme capable of expressing Concurrent ML and built in the MLton SML compiler and runtime. We evaluate the viability of our implementation through three case studies: a prioritized buyer-seller protocol and predictable shutdown mechanisms in the Swerve web server and eXene windowing toolkit. Our experiments show that priority can be easily added to existing CML programs without degrading performance. Our system exhibits negligible overheads on more modest workloads.
本文介绍了一种支持选择性通信和一级通信协议的同步消息传递语言的分层优先级方案。至关重要的是,我们的方案允许高优先级线程与低优先级线程通信,从而提供了表达程序的能力,而经典优先级机制不允许在不同优先级的线程之间进行任何(潜在的)阻塞交互。我们在一个新的语义框架中形式化了我们的方案,该框架具有一系列动作来表示可能的通信。利用我们的形式,我们证明了我们的优先方案的几个重要和理想的性质。我们还提供了一个分层优先级方案的原型实现,它能够表达并发ML,并构建在MLton SML编译器和运行时中。我们通过三个案例研究来评估我们实现的可行性:优先的买方-卖方协议和Swerve web服务器和eXene窗口工具包中的可预测关闭机制。我们的实验表明,可以很容易地将优先级添加到现有的CML程序中,而不会降低性能。我们的系统在更适度的工作负载上的开销可以忽略不计。
{"title":"Send to me first: Priority in synchronous message-passing","authors":"Cheng-En Chuang, Grant Iraci, Lukasz Ziarek","doi":"10.1017/S0956796822000119","DOIUrl":"https://doi.org/10.1017/S0956796822000119","url":null,"abstract":"Abstract In this paper, we introduce a tiered-priority scheme for a synchronous message-passing language with support for selective communication and first-class communication protocols. Crucially, our scheme allows higher priority threads to communicate with lower priority threads, providing the ability to express programs that would be rejected by classic priority mechanisms that disallow any (potentially) blocking interactions between threads of differing priorities. We formalize our scheme in a novel semantic framework featuring a collection of actions to represent possible communications. Utilizing our formalism, we prove several important and desirable properties of our priority scheme. We also provide a prototype implementation of our tiered-priority scheme capable of expressing Concurrent ML and built in the MLton SML compiler and runtime. We evaluate the viability of our implementation through three case studies: a prioritized buyer-seller protocol and predictable shutdown mechanisms in the Swerve web server and eXene windowing toolkit. Our experiments show that priority can be easily added to existing CML programs without degrading performance. Our system exhibits negligible overheads on more modest workloads.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-12-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"44356963","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Fold–unfold lemmas for reasoning about recursive programs using the Coq proof assistant 使用Coq证明助手对递归程序进行推理的折叠展开引理
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-09-29 DOI: 10.1017/S0956796822000107
O. Danvy
Abstract Fold–unfold lemmas complement the rewrite tactic in the Coq Proof Assistant to reason about recursive functions, be they defined locally or globally. Each of the structural cases gives rise to a fold–unfold lemma that equates a call to this function in that case with the corresponding case branch. As such, they are “boilerplate” and can be generated mechanically, though stating them by hand is a learning experience for a beginner, to say nothing about explaining them. Their proof is generic. Their use is precise (e.g., in terms with multiple calls) and they scale seamlessly (e.g., to continuation-passing style and to various patterns of recursion), be the reasoning equational or relational. In the author’s experience, they prove effective in the classroom, considering the clarity of discourse in the subsequent term reports and oral exams, and beyond the classroom, considering their subsequent use when continuing to work with the Coq Proof Assistant. Fold–unfold lemmas also provide a measure of understanding as well as of control about what is cut short when one uses a shortcut, i.e., an automated simplification tactic. Since Version 8.0, the functional-induction plugin provides them for functions that are defined globally, i.e., recursive equations, and so does the Equations plugin now, both for global and for local declarations, a precious help for advanced users.
折叠展开引理补充了Coq证明助手中的重写策略来对递归函数进行推理,无论递归函数是局部定义还是全局定义。每个结构用例都会产生一个折叠展开引理,该引理将这种情况下对该函数的调用等同于相应的用例分支。因此,它们是“样板”,可以机械地生成,尽管手工陈述它们对于初学者来说是一种学习体验,更不用说解释它们了。他们的证明是通用的。它们的使用是精确的(例如,在多个调用方面),并且它们可以无缝地扩展(例如,延续传递风格和各种递归模式),可以是等式或关系推理。根据笔者的经验,这些方法在课堂上是有效的,考虑到在随后的学期报告和口试中话语的清晰性;在课堂之外,考虑到在继续与Coq Proof Assistant合作时的后续使用。折叠展开引理也提供了一种理解和控制的方法,当一个人使用快捷方式时,也就是自动简化策略。从8.0版本开始,函数归纳插件为全局定义的函数(即递归方程)提供了它们,现在的equations插件也提供了它们,无论是全局声明还是局部声明,这对高级用户来说都是宝贵的帮助。
{"title":"Fold–unfold lemmas for reasoning about recursive programs using the Coq proof assistant","authors":"O. Danvy","doi":"10.1017/S0956796822000107","DOIUrl":"https://doi.org/10.1017/S0956796822000107","url":null,"abstract":"Abstract Fold–unfold lemmas complement the rewrite tactic in the Coq Proof Assistant to reason about recursive functions, be they defined locally or globally. Each of the structural cases gives rise to a fold–unfold lemma that equates a call to this function in that case with the corresponding case branch. As such, they are “boilerplate” and can be generated mechanically, though stating them by hand is a learning experience for a beginner, to say nothing about explaining them. Their proof is generic. Their use is precise (e.g., in terms with multiple calls) and they scale seamlessly (e.g., to continuation-passing style and to various patterns of recursion), be the reasoning equational or relational. In the author’s experience, they prove effective in the classroom, considering the clarity of discourse in the subsequent term reports and oral exams, and beyond the classroom, considering their subsequent use when continuing to work with the Coq Proof Assistant. Fold–unfold lemmas also provide a measure of understanding as well as of control about what is cut short when one uses a shortcut, i.e., an automated simplification tactic. Since Version 8.0, the functional-induction plugin provides them for functions that are defined globally, i.e., recursive equations, and so does the Equations plugin now, both for global and for local declarations, a precious help for advanced users.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-09-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"47518255","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
ANF preserves dependent types up to extensional equality ANF保留依赖类型直到外延相等
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-09-16 DOI: 10.1017/S0956796822000090
Paulette Koronkevich, Ramon Rakow, Amal J. Ahmed, W. J. Bowman
Abstract Many programmers use dependently typed languages such as Coq to machine-verify high-assurance software. However, existing compilers for these languages provide no guarantees after compiling, nor when linking after compilation. Type-preserving compilers preserve guarantees encoded in types and then use type checking to verify compiled code and ensure safe linking with external code. Unfortunately, standard compiler passes do not preserve the dependent typing of commonly used (intensional) type theories. This is because assumptions valid in simpler type systems no longer hold, and intensional dependent type systems are highly sensitive to syntactic changes, including compilation. We develop an A-normal form (ANF) translation with join-point optimization—a standard translation for making control flow explicit in functional languages—from the Extended Calculus of Constructions (ECC) with dependent elimination of booleans and natural numbers (a representative subset of Coq). Our dependently typed target language has equality reflection, allowing the type system to encode semantic equality of terms. This is key to proving type preservation and correctness of separate compilation for this translation. This is the first ANF translation for dependent types. Unlike related translations, it supports the universe hierarchy, and does not rely on parametricity or impredicativity.
摘要许多程序员使用依赖类型的语言(如Coq)来对高保证软件进行机器验证。然而,这些语言的现有编译器在编译后和编译后链接时都不能提供任何保证。类型保留编译器保留类型中编码的保证,然后使用类型检查来验证编译的代码,并确保与外部代码的安全链接。不幸的是,标准编译器通行证并没有保留常用(内涵)类型理论的依赖类型。这是因为在更简单的类型系统中有效的假设不再成立,并且依赖于内涵的类型系统对语法变化(包括编译)非常敏感。我们从结构扩展演算(ECC)中开发了一种具有连接点优化的A范式(ANF)翻译,这是一种在函数语言中使控制流显式的标准翻译,具有布尔值和自然数(Coq的代表性子集)的依赖消除。我们的依赖类型目标语言具有相等反射,允许类型系统对术语的语义相等进行编码。这是证明该译本的类型保留和单独编译的正确性的关键。这是第一次对依赖类型进行ANF翻译。与相关翻译不同,它支持宇宙层次结构,不依赖于参数性或不确定性。
{"title":"ANF preserves dependent types up to extensional equality","authors":"Paulette Koronkevich, Ramon Rakow, Amal J. Ahmed, W. J. Bowman","doi":"10.1017/S0956796822000090","DOIUrl":"https://doi.org/10.1017/S0956796822000090","url":null,"abstract":"Abstract Many programmers use dependently typed languages such as Coq to machine-verify high-assurance software. However, existing compilers for these languages provide no guarantees after compiling, nor when linking after compilation. Type-preserving compilers preserve guarantees encoded in types and then use type checking to verify compiled code and ensure safe linking with external code. Unfortunately, standard compiler passes do not preserve the dependent typing of commonly used (intensional) type theories. This is because assumptions valid in simpler type systems no longer hold, and intensional dependent type systems are highly sensitive to syntactic changes, including compilation. We develop an A-normal form (ANF) translation with join-point optimization—a standard translation for making control flow explicit in functional languages—from the Extended Calculus of Constructions (ECC) with dependent elimination of booleans and natural numbers (a representative subset of Coq). Our dependently typed target language has equality reflection, allowing the type system to encode semantic equality of terms. This is key to proving type preservation and correctness of separate compilation for this translation. This is the first ANF translation for dependent types. Unlike related translations, it supports the universe hierarchy, and does not rely on parametricity or impredicativity.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-09-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"44281455","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
A well-known representation of monoids and its application to the function ‘vector reverse’ 一元群的一个著名表示及其在函数“向量逆”中的应用
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-08-08 DOI: 10.1017/S0956796822000065
Wouter Swierstra
Abstract Vectors—or length-indexed lists—are classic example of a dependent type. Yet, most tutorials stay clear of any function on vectors whose definition requires non-trivial equalities between natural numbers to type check. This pearl shows how to write functions, such as vector reverse, that rely on monoidal equalities to be type correct without having to write any additional proofs. These techniques can be applied to many other functions over types indexed by a monoid, written using an accumulating parameter, and even be used to decide arbitrary equalities over monoids ‘for free.’
向量(或长度索引列表)是依赖类型的经典示例。然而,大多数教程都不涉及任何关于向量的函数,这些函数的定义需要自然数之间的非平凡等式来进行类型检查。这个珍珠展示了如何编写函数,比如向量反转,它依赖于一元等式来确保类型正确,而无需编写任何额外的证明。这些技术可以应用到许多其他的函数上,这些函数的索引是由一个单群索引的,使用一个累加参数来编写,甚至可以用来“免费”决定单群上的任意等式。
{"title":"A well-known representation of monoids and its application to the function ‘vector reverse’","authors":"Wouter Swierstra","doi":"10.1017/S0956796822000065","DOIUrl":"https://doi.org/10.1017/S0956796822000065","url":null,"abstract":"Abstract Vectors—or length-indexed lists—are classic example of a dependent type. Yet, most tutorials stay clear of any function on vectors whose definition requires non-trivial equalities between natural numbers to type check. This pearl shows how to write functions, such as vector reverse, that rely on monoidal equalities to be type correct without having to write any additional proofs. These techniques can be applied to many other functions over types indexed by a monoid, written using an accumulating parameter, and even be used to decide arbitrary equalities over monoids ‘for free.’","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-08-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"41761242","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Iterating on multiple collections in synchrony 同步迭代多个集合
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-07-05 DOI: 10.1017/S0956796822000041
S. Perna, V. Tannen, L. Wong
Abstract Modern programming languages typically provide some form of comprehension syntax which renders programs manipulating collection types more readable and understandable. However, comprehension syntax corresponds to nested loops in general. There is no simple way of using it to express efficient general synchronized iterations on multiple ordered collections, such as linear-time algorithms for low-selectivity database joins. Synchrony fold is proposed here as a novel characterization of synchronized iteration. Central to this characterization is a monotonic isBefore predicate for relating the orderings on the two collections being iterated on and an antimonotonic canSee predicate for identifying matching pairs in the two collections to synchronize and act on. A restriction is then placed on Synchrony fold, cutting its extensional expressive power to match that of comprehension syntax, giving us Synchrony generator. Synchrony generator retains sufficient intensional expressive power for expressing efficient synchronized iteration on ordered collections. In particular, it is proved to be a natural generalization of the database merge join algorithm, extending the latter to more general database joins. Finally, Synchrony iterator is derived from Synchrony generator as a novel form of iterator. While Synchrony iterator has the same extensional and intensional expressive power as Synchrony generator, the former is better dovetailed with comprehension syntax. Thereby, algorithms requiring synchronized iterations on multiple ordered collections, including those for efficient general database joins, become expressible naturally in comprehension syntax.
摘要现代编程语言通常提供某种形式的理解语法,使处理集合类型的程序更可读、更容易理解。然而,理解语法通常对应于嵌套循环。没有简单的方法可以使用它来表达对多个有序集合的高效通用同步迭代,例如用于低选择性数据库联接的线性时间算法。本文提出了同步折叠作为同步迭代的一种新的表征方法。这种表征的核心是一个单调的isBefore谓词,用于关联正在迭代的两个集合上的顺序,以及一个反义canSee谓词,用以识别两个集合中要同步和作用的匹配对。然后对Synchrony折叠进行限制,切断其外延表达能力以匹配理解语法,给了我们同步发电机。同步生成器保留了足够的内涵表达能力来表达有序集合上的高效同步迭代。特别地,它被证明是数据库合并连接算法的自然推广,将后者扩展到更通用的数据库连接。最后,Synchrony迭代器是从Synchrony生成器派生而来的一种新型迭代器。虽然Synchrony迭代器具有与Synchrony生成器相同的外延和内涵表达能力,但前者更适合理解语法。因此,需要对多个有序集合进行同步迭代的算法,包括那些用于有效的通用数据库联接的算法,在理解语法中变得自然可表达。
{"title":"Iterating on multiple collections in synchrony","authors":"S. Perna, V. Tannen, L. Wong","doi":"10.1017/S0956796822000041","DOIUrl":"https://doi.org/10.1017/S0956796822000041","url":null,"abstract":"Abstract Modern programming languages typically provide some form of comprehension syntax which renders programs manipulating collection types more readable and understandable. However, comprehension syntax corresponds to nested loops in general. There is no simple way of using it to express efficient general synchronized iterations on multiple ordered collections, such as linear-time algorithms for low-selectivity database joins. Synchrony fold is proposed here as a novel characterization of synchronized iteration. Central to this characterization is a monotonic isBefore predicate for relating the orderings on the two collections being iterated on and an antimonotonic canSee predicate for identifying matching pairs in the two collections to synchronize and act on. A restriction is then placed on Synchrony fold, cutting its extensional expressive power to match that of comprehension syntax, giving us Synchrony generator. Synchrony generator retains sufficient intensional expressive power for expressing efficient synchronized iteration on ordered collections. In particular, it is proved to be a natural generalization of the database merge join algorithm, extending the latter to more general database joins. Finally, Synchrony iterator is derived from Synchrony generator as a novel form of iterator. While Synchrony iterator has the same extensional and intensional expressive power as Synchrony generator, the former is better dovetailed with comprehension syntax. Thereby, algorithms requiring synchronized iterations on multiple ordered collections, including those for efficient general database joins, become expressible naturally in comprehension syntax.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-07-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"45861238","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
PhD Abstracts 摘要博士
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-06-23 DOI: 10.1017/S0956796822000053
G. Hutton
{"title":"PhD Abstracts","authors":"G. Hutton","doi":"10.1017/S0956796822000053","DOIUrl":"https://doi.org/10.1017/S0956796822000053","url":null,"abstract":"","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-06-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"44880206","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Super-naturals 超自然
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-01-31 DOI: 10.1017/S0956796822000028
Ralf Hinze, C. Runciman
© The Author(s), 2022. Published by Cambridge University Press. This is an Open 1 Access article, distributed under the terms of the Creative Commons Attribution-NonCommercial-NoDerivatives licence (https://creativecommons.org/licenses/by-nc-nd/4.0/), which permits non-commercial re-use, distribution, and reproduction in any medium, provided the original work is unaltered and is properly cited. The written permission of Cambridge University Press must be obtained for commercial re-use or in order to create a derivative work. doi:10.1017/S0956796822000028
©作者,2022年。剑桥大学出版社出版。这是一篇开放获取的文章,根据知识共享署名非商业NoDerivatives许可证的条款分发(https://creativecommons.org/licenses/by-nc-nd/4.0/),允许在任何媒体上进行非商业性的重复使用、分发和复制,前提是原作未经更改并被适当引用。商业重复使用或创作衍生作品必须获得剑桥大学出版社的书面许可。doi:10.1017/S0956796822000028
{"title":"Super-naturals","authors":"Ralf Hinze, C. Runciman","doi":"10.1017/S0956796822000028","DOIUrl":"https://doi.org/10.1017/S0956796822000028","url":null,"abstract":"© The Author(s), 2022. Published by Cambridge University Press. This is an Open 1 Access article, distributed under the terms of the Creative Commons Attribution-NonCommercial-NoDerivatives licence (https://creativecommons.org/licenses/by-nc-nd/4.0/), which permits non-commercial re-use, distribution, and reproduction in any medium, provided the original work is unaltered and is properly cited. The written permission of Cambridge University Press must be obtained for commercial re-use or in order to create a derivative work. doi:10.1017/S0956796822000028","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-01-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"42905128","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Fregel: a functional domain-specific language for vertex-centric large-scale graph processing Fregel:用于以顶点为中心的大规模图形处理的功能领域特定语言
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-01-20 DOI: 10.1017/S0956796821000277
H. Iwasaki, Kento Emoto, Akimasa Morihata, Kiminori Matsuzaki, Zhenjiang Hu
Abstract The vertex-centric programming model is now widely used for processing large graphs. User-defined vertex programs are executed in parallel over every vertex of a graph, but the imperative and explicit message-passing style of existing systems makes defining a vertex program unintuitive and difficult. This article presents Fregel, a purely functional domain-specific language for processing large graphs and describes its model, design, and implementation. Fregel is a subset of Haskell, so Haskell tools can be used to test and debug Fregel programs. The vertex-centric computation is abstracted using compositional programming that uses second-order functions on graphs provided by Fregel. A Fregel program can be compiled into imperative programs for use in the Giraph and Pregel+ vertex-centric frameworks. Fregel’s functional nature without side effects enables various transformations and optimizations during the compilation process. Thus, the programmer is freed from the burden of program optimization, which is manually done for existing imperative systems. Experimental results for typical examples demonstrated that the compiled code can be executed with reasonable and promising performance.
摘要以顶点为中心的编程模型现在被广泛用于处理大型图。用户定义的顶点程序在图的每个顶点上并行执行,但现有系统的命令式和显式消息传递风格使定义顶点程序变得不直观和困难。本文介绍了Fregel,一种用于处理大型图的纯函数域专用语言,并描述了它的模型、设计和实现。Fregel是Haskell的一个子集,因此可以使用Haskell工具来测试和调试Fregel程序。顶点中心计算是使用组合编程抽象的,该组合编程使用Fregel提供的图上的二阶函数。Fregel程序可以编译成命令式程序,用于Giraph和Pregel+顶点中心框架。Fregel在没有副作用的情况下具有功能性,可以在编译过程中进行各种转换和优化。因此,程序员摆脱了程序优化的负担,而程序优化是为现有的命令式系统手动完成的。典型实例的实验结果表明,编译后的代码能够以合理且有前景的性能执行。
{"title":"Fregel: a functional domain-specific language for vertex-centric large-scale graph processing","authors":"H. Iwasaki, Kento Emoto, Akimasa Morihata, Kiminori Matsuzaki, Zhenjiang Hu","doi":"10.1017/S0956796821000277","DOIUrl":"https://doi.org/10.1017/S0956796821000277","url":null,"abstract":"Abstract The vertex-centric programming model is now widely used for processing large graphs. User-defined vertex programs are executed in parallel over every vertex of a graph, but the imperative and explicit message-passing style of existing systems makes defining a vertex program unintuitive and difficult. This article presents Fregel, a purely functional domain-specific language for processing large graphs and describes its model, design, and implementation. Fregel is a subset of Haskell, so Haskell tools can be used to test and debug Fregel programs. The vertex-centric computation is abstracted using compositional programming that uses second-order functions on graphs provided by Fregel. A Fregel program can be compiled into imperative programs for use in the Giraph and Pregel+ vertex-centric frameworks. Fregel’s functional nature without side effects enables various transformations and optimizations during the compilation process. Thus, the programmer is freed from the burden of program optimization, which is manually done for existing imperative systems. Experimental results for typical examples demonstrated that the compiled code can be executed with reasonable and promising performance.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-01-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"44834519","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
On being a PhD student of Robert Harper 作为罗伯特·哈珀的博士生
IF 1.1 3区 计算机科学 Q4 Computer Science Pub Date : 2022-01-05 DOI: 10.1017/s0956796821000289
Derek Dreyer, Benjamin C. Pierce
Abstract The Robert Harper Festschrift includes articles by three of Bob’s students and colleagues—Karl Crary, Andrzej Filinski, and Jonathan Sterling. Each of these articles touches on themes that are central to Bob’s research: module system design, proof-directed program development, and (to use Bob’s term) “computational trinitarianism”. In this foreword to the Festschrift, we have additionally compiled reminiscences of Bob Harper from his PhD students. We invited them to reflect on their experiences working with and learning from Bob. We believe these reminiscences, presented in chronological order of dissertation date, deliver a most fitting tribute to Bob in honor of his 64th birthday.
摘要Robert Harper Festschrift收录了Bob的三位学生和同事——Karl Crary、Andrzej Filinski和Jonathan Sterling的文章。这些文章中的每一篇都涉及Bob研究的核心主题:模块系统设计、面向证明的程序开发,以及(用Bob的话说)“计算三位一体”。在Festschrift的前言中,我们还整理了鲍勃·哈珀博士生的回忆。我们邀请他们反思与Bob合作和向Bob学习的经历。我们相信,这些回忆录按照论文日期的时间顺序呈现,是对鲍勃64岁生日的最恰当的致敬。
{"title":"On being a PhD student of Robert Harper","authors":"Derek Dreyer, Benjamin C. Pierce","doi":"10.1017/s0956796821000289","DOIUrl":"https://doi.org/10.1017/s0956796821000289","url":null,"abstract":"Abstract The Robert Harper Festschrift includes articles by three of Bob’s students and colleagues—Karl Crary, Andrzej Filinski, and Jonathan Sterling. Each of these articles touches on themes that are central to Bob’s research: module system design, proof-directed program development, and (to use Bob’s term) “computational trinitarianism”. In this foreword to the Festschrift, we have additionally compiled reminiscences of Bob Harper from his PhD students. We invited them to reflect on their experiences working with and learning from Bob. We believe these reminiscences, presented in chronological order of dissertation date, deliver a most fitting tribute to Bob in honor of his 64th birthday.","PeriodicalId":15874,"journal":{"name":"Journal of Functional Programming","volume":null,"pages":null},"PeriodicalIF":1.1,"publicationDate":"2022-01-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"45642955","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Journal of Functional Programming
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1