首页 > 最新文献

ACM SIGPLAN Symposium/Workshop on Haskell最新文献

英文 中文
Invertible syntax descriptions: unifying parsing and pretty printing 可逆的语法描述:统一的解析和漂亮的打印
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863525
Tillmann Rendel, K. Ostermann
Parsers and pretty-printers for a language are often quite similar, yet both are typically implemented separately, leading to redundancy and potential inconsistency. We propose a new interface of syntactic descriptions, with which both parser and pretty-printer can be described as a single program. Whether a syntactic description is used as a parser or as a pretty-printer is determined by the implementation of the interface. Syntactic descriptions enable programmers to describe the connection between concrete and abstract syntax once and for all, and use these descriptions for parsing or pretty-printing as needed. We also discuss the generalization of our programming technique towards an algebra of partial isomorphisms.
语言的解析器和漂亮的打印机通常非常相似,但它们通常是单独实现的,导致冗余和潜在的不一致。我们提出了一个新的语法描述接口,用它可以将解析器和漂亮打印机作为一个程序来描述。语法描述是用作解析器还是用作漂亮的打印机由接口的实现决定。语法描述使程序员能够一劳永逸地描述具体语法和抽象语法之间的联系,并根据需要使用这些描述进行解析或美观打印。我们还讨论了对部分同构代数的规划技术的推广。
{"title":"Invertible syntax descriptions: unifying parsing and pretty printing","authors":"Tillmann Rendel, K. Ostermann","doi":"10.1145/1863523.1863525","DOIUrl":"https://doi.org/10.1145/1863523.1863525","url":null,"abstract":"Parsers and pretty-printers for a language are often quite similar, yet both are typically implemented separately, leading to redundancy and potential inconsistency. We propose a new interface of syntactic descriptions, with which both parser and pretty-printer can be described as a single program. Whether a syntactic description is used as a parser or as a pretty-printer is determined by the implementation of the interface. Syntactic descriptions enable programmers to describe the connection between concrete and abstract syntax once and for all, and use these descriptions for parsing or pretty-printing as needed. We also discuss the generalization of our programming technique towards an algebra of partial isomorphisms.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"144 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131764277","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 52
Concurrent orchestration in Haskell Haskell中的并发编排
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863534
J. Launchbury, Trevor Elliott
We present a concurrent scripting language embedded in Haskell, emulating the functionality of the Orc orchestration language by providing many-valued (real) non-determinism in the context of concurrent effects. We provide many examples of its use, as well as a brief description of how we use the embedded Orc DSL in practice. We describe the abstraction layers of the implementation, and use the fact that we have a layered approach to demonstrate algebraic properties satisfied by the combinators.
我们提出了一种嵌入在Haskell中的并发脚本语言,通过在并发效果上下文中提供多值(真正的)非确定性来模拟Orc编排语言的功能。我们提供了许多使用它的例子,以及我们如何在实践中使用嵌入式Orc DSL的简要描述。我们描述了实现的抽象层,并使用分层方法来演示组合子满足的代数属性。
{"title":"Concurrent orchestration in Haskell","authors":"J. Launchbury, Trevor Elliott","doi":"10.1145/1863523.1863534","DOIUrl":"https://doi.org/10.1145/1863523.1863534","url":null,"abstract":"We present a concurrent scripting language embedded in Haskell, emulating the functionality of the Orc orchestration language by providing many-valued (real) non-determinism in the context of concurrent effects. We provide many examples of its use, as well as a brief description of how we use the embedded Orc DSL in practice. We describe the abstraction layers of the implementation, and use the fact that we have a layered approach to demonstrate algebraic properties satisfied by the combinators.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"307 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115865435","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Experience report: using hackage to inform language design 经验报告:使用hackage来指导语言设计
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863531
J. Garrett Morris
Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language designers: by providing a large collection of code written by different programmers and in different styles, it allows language designers to see not just how features could be used theoretically, but how they are (and are not) used in practice. We were able to make such a use of Hackage during the design of the class system for a new Haskell-like programming language. In this paper, we sketch our language design problem, and how we used Hackage to help answer it. We describe our methodology in some detail, including both ways that it was and was not effective, and summarize our results.
Hackage是一个Haskell应用程序和库的在线存储库,它为程序员提供了一个向更大的Haskell社区发布代码和使用代码的中心。我们建议Hackage也可以作为语言设计师的宝贵资源:通过提供由不同程序员以不同风格编写的大量代码,它使语言设计师不仅可以看到理论上如何使用功能,还可以看到它们在实践中如何使用(或不使用)。在为一种新的类haskell编程语言设计类系统的过程中,我们能够使用Hackage。在本文中,我们概述了我们的语言设计问题,以及我们如何使用Hackage来帮助解决这个问题。我们详细描述了我们的方法,包括它有效和无效的两种方式,并总结了我们的结果。
{"title":"Experience report: using hackage to inform language design","authors":"J. Garrett Morris","doi":"10.1145/1863523.1863531","DOIUrl":"https://doi.org/10.1145/1863523.1863531","url":null,"abstract":"Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language designers: by providing a large collection of code written by different programmers and in different styles, it allows language designers to see not just how features could be used theoretically, but how they are (and are not) used in practice.\u0000 We were able to make such a use of Hackage during the design of the class system for a new Haskell-like programming language. In this paper, we sketch our language design problem, and how we used Hackage to help answer it. We describe our methodology in some detail, including both ways that it was and was not effective, and summarize our results.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"122 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134420789","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Seq no more: better strategies for parallel Haskell 不再有Seq:更好的并行Haskell策略
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863535
S. Marlow, Patrick Maier, Hans-Wolfgang Loidl, M. Aswad, P. Trinder
We present a complete redesign of evaluation strategies, a key abstraction for specifying pure, deterministic parallelism in Haskell. Our new formulation preserves the compositionality and modularity benefits of the original, while providing significant new benefits. First, we introduce an evaluation-order monad to provide clearer, more generic, and more efficient specification of parallel evaluation. Secondly, the new formulation resolves a subtle space management issue with the original strategies, allowing parallelism (sparks) to be preserved while reclaiming heap associated with superfluous parallelism. Related to this, the new formulation provides far better support for speculative parallelism as the garbage collector now prunes unneeded speculation. Finally, the new formulation provides improved compositionality: we can directly express parallelism embedded within lazy data structures, producing more compositional strategies, and our basic strategies are parametric in the coordination combinator, facilitating a richer set of parallelism combinators. We give measurements over a range of benchmarks demonstrating that the runtime overheads of the new formulation relative to the original are low, and the new strategies even yield slightly better speedups on average than the original strategies
我们提出了评估策略的完全重新设计,这是在Haskell中指定纯确定性并行性的关键抽象。我们的新配方保留了原配方的组合性和模块化优势,同时提供了显著的新优势。首先,我们引入了一个求值顺序单子,以提供更清晰、更通用、更有效的并行求值规范。其次,新公式解决了原始策略的一个微妙的空间管理问题,允许在回收与多余并行性相关的堆的同时保留并行性(火花)。与此相关的是,新公式为推测并行性提供了更好的支持,因为垃圾收集器现在会删除不需要的推测。最后,新公式提供了改进的组合性:我们可以直接表示嵌入在惰性数据结构中的并行性,从而产生更多的组合策略,并且我们的基本策略在协调组合子中是参数化的,从而促进了更丰富的并行组合子集。我们对一系列基准测试进行了测量,证明新公式相对于原始策略的运行时开销较低,并且新策略甚至平均比原始策略产生更好的加速
{"title":"Seq no more: better strategies for parallel Haskell","authors":"S. Marlow, Patrick Maier, Hans-Wolfgang Loidl, M. Aswad, P. Trinder","doi":"10.1145/1863523.1863535","DOIUrl":"https://doi.org/10.1145/1863523.1863535","url":null,"abstract":"We present a complete redesign of evaluation strategies, a key abstraction for specifying pure, deterministic parallelism in Haskell. Our new formulation preserves the compositionality and modularity benefits of the original, while providing significant new benefits. First, we introduce an evaluation-order monad to provide clearer, more generic, and more efficient specification of parallel evaluation. Secondly, the new formulation resolves a subtle space management issue with the original strategies, allowing parallelism (sparks) to be preserved while reclaiming heap associated with superfluous parallelism. Related to this, the new formulation provides far better support for speculative parallelism as the garbage collector now prunes unneeded speculation. Finally, the new formulation provides improved compositionality: we can directly express parallelism embedded within lazy data structures, producing more compositional strategies, and our basic strategies are parametric in the coordination combinator, facilitating a richer set of parallelism combinators.\u0000 We give measurements over a range of benchmarks demonstrating that the runtime overheads of the new formulation relative to the original are low, and the new strategies even yield slightly better speedups on average than the original strategies","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"289 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123274049","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 82
Exchanging sources between clean and Haskell: a double-edged front end for the clean compiler 在clean和Haskell之间交换源代码:clean编译器的双刃剑前端
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863530
John H. G. van Groningen, T. V. Noort, P. Achten, P. Koopman, M. J. Plasmeijer
The functional programming languages Clean and Haskell have been around for over two decades. Over time, both languages have developed a large body of useful libraries and come with interesting language features. It is our primary goal to benefit from each other's evolutionary results by facilitating the exchange of sources between Clean and Haskell and study the forthcoming interactions between their distinct languages features. This is achieved by using the existing Clean compiler as starting point, and implementing a double-edged front end for this compiler: it supports both standard Clean 2.1 and (currently a large part of) standard Haskell 98. Moreover, it allows both languages to seamlessly use many of each other's language features that were alien to each other before. For instance, Haskell can now use uniqueness typing anywhere, and Clean can use newtypes efficiently. This has given birth to two new dialects of Clean and Haskell, dubbed Clean* and Haskell*. Additionally, measurements of the performance of the new compiler indicate that it is on par with the flagship Haskell compiler GHC.
函数式编程语言Clean和Haskell已经存在了20多年。随着时间的推移,这两种语言都开发了大量有用的库,并带来了有趣的语言特性。我们的主要目标是通过促进Clean和Haskell之间的源代码交换,并研究它们不同语言特性之间即将发生的交互,从而从彼此的进化结果中受益。这是通过使用现有的Clean编译器作为起点来实现的,并为这个编译器实现了一个双刃剑的前端:它既支持标准的Clean 2.1,也支持(目前大部分)标准的Haskell 98。此外,它允许两种语言无缝地使用许多以前彼此陌生的语言特性。例如,Haskell现在可以在任何地方使用惟一类型,而Clean可以有效地使用newtypes。这就产生了Clean和Haskell两种新的方言,分别被称为Clean*和Haskell*。此外,对新编译器性能的测量表明,它与旗舰Haskell编译器GHC不相上下。
{"title":"Exchanging sources between clean and Haskell: a double-edged front end for the clean compiler","authors":"John H. G. van Groningen, T. V. Noort, P. Achten, P. Koopman, M. J. Plasmeijer","doi":"10.1145/1863523.1863530","DOIUrl":"https://doi.org/10.1145/1863523.1863530","url":null,"abstract":"The functional programming languages Clean and Haskell have been around for over two decades. Over time, both languages have developed a large body of useful libraries and come with interesting language features. It is our primary goal to benefit from each other's evolutionary results by facilitating the exchange of sources between Clean and Haskell and study the forthcoming interactions between their distinct languages features. This is achieved by using the existing Clean compiler as starting point, and implementing a double-edged front end for this compiler: it supports both standard Clean 2.1 and (currently a large part of) standard Haskell 98. Moreover, it allows both languages to seamlessly use many of each other's language features that were alien to each other before. For instance, Haskell can now use uniqueness typing anywhere, and Clean can use newtypes efficiently. This has given birth to two new dialects of Clean and Haskell, dubbed Clean* and Haskell*. Additionally, measurements of the performance of the new compiler indicate that it is on par with the flagship Haskell compiler GHC.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115109140","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Species and functors and types, oh my! 物种,函子和类型,天哪!
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863542
Brent A. Yorgey
The theory of combinatorial species, although invented as a purely mathematical formalism to unify much of combinatorics, can also serve as a powerful and expressive language for talking about data types. With potential applications to automatic test generation, generic programming, and language design, the theory deserves to be much better known in the functional programming community. This paper aims to teach the basic theory of combinatorial species using motivation and examples from the world of functional programming. It also introduces the species library, available on Hackage, which is used to illustrate the concepts introduced and can serve as a platform for continued study and research.
组合种理论虽然是作为一种纯粹的数学形式来统一许多组合学,但也可以作为讨论数据类型的强大而富有表现力的语言。随着自动测试生成、泛型编程和语言设计的潜在应用,该理论应该在函数式编程社区中得到更好的了解。本文旨在利用函数式编程中的动机和实例来教授组合种的基本理论。它还介绍了物种库,可在Hackage上使用,用于说明所介绍的概念,并可作为继续学习和研究的平台。
{"title":"Species and functors and types, oh my!","authors":"Brent A. Yorgey","doi":"10.1145/1863523.1863542","DOIUrl":"https://doi.org/10.1145/1863523.1863542","url":null,"abstract":"The theory of combinatorial species, although invented as a purely mathematical formalism to unify much of combinatorics, can also serve as a powerful and expressive language for talking about data types. With potential applications to automatic test generation, generic programming, and language design, the theory deserves to be much better known in the functional programming community. This paper aims to teach the basic theory of combinatorial species using motivation and examples from the world of functional programming. It also introduces the species library, available on Hackage, which is used to illustrate the concepts introduced and can serve as a platform for continued study and research.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134070066","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 13
Scalable i/o event handling for GHC 可伸缩的i/o事件处理GHC
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863536
Bryan O'Sullivan, Johan Tibell
We have developed a new, portable I/O event manager for the Glasgow Haskell Compiler (GHC) that scales to the needs of modern server applications. Our new code is transparently available to existing Haskell applications. Performance at lower concurrency levels is comparable with the existing implementation. We support millions of concurrent network connections, with millions of active timeouts, from a single multithreaded program, levels far beyond those achievable with the current I/O manager. In addition, we provide a public API to developers who need to create event-driven network applications.
我们为格拉斯哥Haskell编译器(GHC)开发了一个新的、可移植的I/O事件管理器,它可以扩展到现代服务器应用程序的需求。我们的新代码对现有的Haskell应用程序是透明的。较低并发级别下的性能与现有实现相当。我们支持来自单个多线程程序的数百万并发网络连接和数百万活动超时,其级别远远超过当前I/O管理器所能实现的级别。此外,我们为需要创建事件驱动网络应用程序的开发人员提供了一个公共API。
{"title":"Scalable i/o event handling for GHC","authors":"Bryan O'Sullivan, Johan Tibell","doi":"10.1145/1863523.1863536","DOIUrl":"https://doi.org/10.1145/1863523.1863536","url":null,"abstract":"We have developed a new, portable I/O event manager for the Glasgow Haskell Compiler (GHC) that scales to the needs of modern server applications. Our new code is transparently available to existing Haskell applications. Performance at lower concurrency levels is comparable with the existing implementation. We support millions of concurrent network connections, with millions of active timeouts, from a single multithreaded program, levels far beyond those achievable with the current I/O manager. In addition, we provide a public API to developers who need to create event-driven network applications.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125011328","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
Hoopl: a modular, reusable library for dataflow analysis and transformation Hoopl:用于数据流分析和转换的模块化、可重用库
Pub Date : 2010-11-17 DOI: 10.1145/1863523.1863539
N. Ramsey, João Dias, S. Jones
Dataflow analysis and transformation of control-flow graphs is pervasive in optimizing compilers, but it is typically entangled with the details of a particular compiler. We describe Hoopl, a reusable library that makes it unusually easy to define new analyses and transformations for any compiler written in Haskell. Hoopl's interface is modular and polymorphic, and it offers unusually strong static guarantees. The implementation encapsulates state-of-the-art algorithms (interleaved analysis and rewriting, dynamic error isolation), and it cleanly separates their tricky elements so that they can be understood independently.
数据流分析和控制流图的转换在优化编译器中非常普遍,但它通常与特定编译器的细节纠缠在一起。我们描述了Hoopl,一个可重用的库,它使得为任何用Haskell编写的编译器定义新的分析和转换变得异常容易。Hoopl的接口是模块化和多态的,它提供了异常强大的静态保证。该实现封装了最先进的算法(交错分析和重写、动态错误隔离),并且干净地分离了它们的棘手元素,以便可以独立地理解它们。
{"title":"Hoopl: a modular, reusable library for dataflow analysis and transformation","authors":"N. Ramsey, João Dias, S. Jones","doi":"10.1145/1863523.1863539","DOIUrl":"https://doi.org/10.1145/1863523.1863539","url":null,"abstract":"Dataflow analysis and transformation of control-flow graphs is pervasive in optimizing compilers, but it is typically entangled with the details of a particular compiler. We describe Hoopl, a reusable library that makes it unusually easy to define new analyses and transformations for any compiler written in Haskell. Hoopl's interface is modular and polymorphic, and it offers unusually strong static guarantees. The implementation encapsulates state-of-the-art algorithms (interleaved analysis and rewriting, dynamic error isolation), and it cleanly separates their tricky elements so that they can be understood independently.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131081142","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 32
Supercompilation by evaluation 求值超编译
Pub Date : 2010-09-30 DOI: 10.1145/1863523.1863540
Maximilian Bolingbroke, S. Jones
This paper shows how call-by-need supercompilation can be recast to be based explicitly on an evaluator, contrasting with standard presentations which are specified as algorithms that mix evaluation rules with reductions that are unique to supercompilation. Building on standard operational-semantics technology for call-by-need languages, we show how to extend the supercompilation algorithm to deal with recursive let expressions.
本文展示了如何将按需调用的超编译重新定义为明确地基于求值器,而不是将标准表示指定为混合了求值规则和超编译特有的约简的算法。在按需调用语言的标准操作语义技术的基础上,我们展示了如何扩展超编译算法来处理递归let表达式。
{"title":"Supercompilation by evaluation","authors":"Maximilian Bolingbroke, S. Jones","doi":"10.1145/1863523.1863540","DOIUrl":"https://doi.org/10.1145/1863523.1863540","url":null,"abstract":"This paper shows how call-by-need supercompilation can be recast to be based explicitly on an evaluator, contrasting with standard presentations which are specified as algorithms that mix evaluation rules with reductions that are unique to supercompilation. Building on standard operational-semantics technology for call-by-need languages, we show how to extend the supercompilation algorithm to deal with recursive let expressions.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123624762","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 40
Alloy: fast generic transformations for Haskell Alloy:用于Haskell的快速通用转换
Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596652
Neil C. C. Brown, Adam T. Sampson
Data-type generic programming can be used to traverse and manipulate specific parts of large heterogeneously-typed tree structures, without the need for tedious boilerplate. Generic programming is often approached from a theoretical perspective, where the emphasis lies on the power of the representation rather than on efficiency. We describe use cases for a generic system derived from our work on a nanopass compiler, where efficiency is a real concern, and detail a new generics approach (Alloy) that we have developed in Haskell to allow our compiler passes to traverse the abstract syntax tree quickly. We benchmark our approach against several other Haskell generics approaches and statistically analyse the results, finding that Alloy is fastest on heterogeneously-typed trees.
数据类型泛型编程可用于遍历和操作大型异构类型树结构的特定部分,而不需要繁琐的样板文件。泛型编程通常是从理论的角度进行的,其重点在于表示的能力而不是效率。我们描述了一个泛型系统的用例,这个泛型系统来源于我们在纳米粒子编译器上的工作,其中效率是一个真正关注的问题,并详细介绍了我们在Haskell中开发的一种新的泛型方法(Alloy),它允许我们的编译器传递快速遍历抽象语法树。我们将我们的方法与其他几种Haskell泛型方法进行了基准测试,并对结果进行了统计分析,发现Alloy在异构类型树上是最快的。
{"title":"Alloy: fast generic transformations for Haskell","authors":"Neil C. C. Brown, Adam T. Sampson","doi":"10.1145/1596638.1596652","DOIUrl":"https://doi.org/10.1145/1596638.1596652","url":null,"abstract":"Data-type generic programming can be used to traverse and manipulate specific parts of large heterogeneously-typed tree structures, without the need for tedious boilerplate. Generic programming is often approached from a theoretical perspective, where the emphasis lies on the power of the representation rather than on efficiency. We describe use cases for a generic system derived from our work on a nanopass compiler, where efficiency is a real concern, and detail a new generics approach (Alloy) that we have developed in Haskell to allow our compiler passes to traverse the abstract syntax tree quickly. We benchmark our approach against several other Haskell generics approaches and statistically analyse the results, finding that Alloy is fastest on heterogeneously-typed trees.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123005948","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
期刊
ACM SIGPLAN Symposium/Workshop on Haskell
全部 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