ACM SIGPLAN Symposium/Workshop on Haskell最新文献

筛选
英文 中文
Unembedding domain-specific languages 取消嵌入特定于领域的语言
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596644
R. Atkey, S. Lindley, J. Yallop
{"title":"Unembedding domain-specific languages","authors":"R. Atkey, S. Lindley, J. Yallop","doi":"10.1145/1596638.1596644","DOIUrl":"https://doi.org/10.1145/1596638.1596644","url":null,"abstract":"Higher-order abstract syntax provides a convenient way of embedding domain-specific languages, but is awkward to analyse and manipulate directly. We explore the boundaries of higher-order abstract syntax. Our key tool is the unembedding of embedded terms as de Bruijn terms, enabling intensional analysis. As part of our solution we present techniques for separating the definition of an embedded program from its interpretation, giving modular extensions of the embedded language, and different ways to encode the types of the embedded language.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"24 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":"123530064","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}
引用次数: 42
Lazy functional incremental parsing 惰性函数增量解析
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596645
Jean-Philippe Bernardy
{"title":"Lazy functional incremental parsing","authors":"Jean-Philippe Bernardy","doi":"10.1145/1596638.1596645","DOIUrl":"https://doi.org/10.1145/1596638.1596645","url":null,"abstract":"Structured documents are commonly edited using a free-form editor. Even though every string is an acceptable input, it makes sense to maintain a structured representation of the edited document. The structured representation has a number of uses: structural navigation (and optional structural editing), structure highlighting, etc. The construction of the structure must be done incrementally to be efficient: the time to process an edit operation should be proportional to the size of the change, and (ideally) independent of the total size of the document. We show that combining lazy evaluation and caching of intermediate (partial) results enables incremental parsing. We build a complete incremental parsing library for interactive systems with support for error-correction.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"35 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":"133535824","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}
引用次数: 14
Types are calling conventions 类型调用约定
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596640
Maximilian Bolingbroke, S. Jones
{"title":"Types are calling conventions","authors":"Maximilian Bolingbroke, S. Jones","doi":"10.1145/1596638.1596640","DOIUrl":"https://doi.org/10.1145/1596638.1596640","url":null,"abstract":"It is common for compilers to derive the calling convention of a function from its type. Doing so is simple and modular but misses many optimisation opportunities, particularly in lazy, higher-order functional languages with extensive use of currying. We restore the lost opportunities by defining Strict Core, a new intermediate language whose type system makes the missing distinctions: laziness is explicit, and functions take multiple arguments and return multiple results.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"40 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":"116827204","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
Type-safe observable sharing in Haskell Haskell中类型安全的可观察对象共享
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596653
Andy Gill
{"title":"Type-safe observable sharing in Haskell","authors":"Andy Gill","doi":"10.1145/1596638.1596653","DOIUrl":"https://doi.org/10.1145/1596638.1596653","url":null,"abstract":"Haskell is a great language for writing and supporting embedded Domain Specific Languages (DSLs). Some form of observable sharing is often a critical capability for allowing so-called deep DSLs to be compiled and processed. In this paper, we describe and explore uses of an IO function for reification which allows direct observation of sharing.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"41 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":"125508099","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}
引用次数: 89
Push-pull functional reactive programming 推拉式函数式响应式编程
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596643
Conal Elliott
{"title":"Push-pull functional reactive programming","authors":"Conal Elliott","doi":"10.1145/1596638.1596643","DOIUrl":"https://doi.org/10.1145/1596638.1596643","url":null,"abstract":"Functional reactive programming (FRP) has simple and powerful semantics, but has resisted efficient implementation. In particular, most past implementations have used demand-driven sampling, which accommodates FRP's continuous time semantics and fits well with the nature of functional programming. Consequently, values are wastefully recomputed even when inputs don't change, and reaction latency can be as high as the sampling period. This paper presents a way to implement FRP that combines data- and demand-driven evaluation, in which values are recomputed only when necessary, and reactions are nearly instantaneous. The implementation is rooted in a new simple formulation of FRP and its semantics and so is easy to understand and reason about. On the road to a new implementation, we'll meet some old friends (monoids, functors, applicative functors, monads, morphisms, and improving values) and make some new friends (functional future values, reactive normal form, and concurrent \"unambiguous choice\").","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"53 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":"127842611","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}
引用次数: 138
Parallel performance tuning for Haskell Haskell的并行性能调优
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596649
Don Jones, S. Marlow, Satnam Singh
{"title":"Parallel performance tuning for Haskell","authors":"Don Jones, S. Marlow, Satnam Singh","doi":"10.1145/1596638.1596649","DOIUrl":"https://doi.org/10.1145/1596638.1596649","url":null,"abstract":"Parallel Haskell programming has entered the mainstream with support now included in GHC for multiple parallel programming models, along with multicore execution support in the runtime. However, tuning programs for parallelism is still something of a black art. Without much in the way of feedback provided by the runtime system, it is a matter of trial and error combined with experience to achieve good parallel speedups.\u0000 This paper describes an early prototype of a parallel profiling system for multicore programming with GHC. The system comprises three parts: fast event tracing in the runtime, a Haskell library for reading the resulting trace files, and a number of tools built on this library for presenting the information to the programmer. We focus on one tool in particular, a graphical timeline browser called ThreadScope.\u0000 The paper illustrates the use of ThreadScope through a number of case studies, and describes some useful methodologies for parallelizing Haskell programs.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"11 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":"131992270","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}
引用次数: 46
Roll your own test bed for embedded real-time protocols: a haskell experience 推出您自己的嵌入式实时协议测试平台:一种haskell体验
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596646
Lee Pike, Geoffrey M. Brown, Alwyn E. Goodloe
{"title":"Roll your own test bed for embedded real-time protocols: a haskell experience","authors":"Lee Pike, Geoffrey M. Brown, Alwyn E. Goodloe","doi":"10.1145/1596638.1596646","DOIUrl":"https://doi.org/10.1145/1596638.1596646","url":null,"abstract":"We present by example a new application domain for functional languages: emulators for embedded real-time protocols. As a case-study, we implement a simple emulator for the Biphase Mark Protocol, a physical-layer network protocol in Haskell. The surprising result is that a pure functional language with no built-in notion of time is extremely well-suited for constructing such emulators. Furthermore, we use Haskell's property-checker QuickCheck to automatically generate real-time parameters for simulation. We also describe a novel use of QuickCheck as a \"probability calculator\" for reliability analysis.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"08 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":"127218156","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}
引用次数: 1
Finding the needle: stack traces for GHC 寻找针头:GHC的堆叠痕迹
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596654
T. O. R. Allwood, S. Jones, S. Eisenbach
{"title":"Finding the needle: stack traces for GHC","authors":"T. O. R. Allwood, S. Jones, S. Eisenbach","doi":"10.1145/1596638.1596654","DOIUrl":"https://doi.org/10.1145/1596638.1596654","url":null,"abstract":"Even Haskell programs can occasionally go wrong. Programs calling head on an empty list, and incomplete patterns in function definitions can cause program crashes, reporting little more than the precise location where error was ultimately called. Being told that one application of the head function in your program went wrong, without knowing which use of head went wrong can be infuriating. We present our work on adding the ability to get stack traces out of GHC, for example that our crashing head was used during the evaluation of foo, which was called during the evaluation of bar, during the evaluation of main. We provide a transformation that converts GHC Core programs into ones that pass a stack around, and a stack library that ensures bounded heap usage despite the highly recursive nature of Haskell. We call our extension to GHC StackTrace.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"61 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":"127042551","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}
引用次数: 15
Losing functions without gaining data: another look at defunctionalisation 失去功能却没有获得数据:再看一下去功能化
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596641
Neil Mitchell, C. Runciman
{"title":"Losing functions without gaining data: another look at defunctionalisation","authors":"Neil Mitchell, C. Runciman","doi":"10.1145/1596638.1596641","DOIUrl":"https://doi.org/10.1145/1596638.1596641","url":null,"abstract":"We describe a transformation which takes a higher-order program, and produces an equivalent first-order program. Unlike Reynolds-style defunctionalisation, it does not introduce any new data types, and the results are more amenable to subsequent analysis operations. We can use our method to improve the results of existing analysis operations, including strictness analysis, pattern-match safety and termination checking. Our transformation is implemented, and works on a Core language to which Haskell programs can be reduced. Our method cannot always succeed in removing all functional values, but in practice is remarkably successful.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"23 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":"121402438","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
A compositional theory for STM Haskell STM Haskell的组合理论
ACM SIGPLAN Symposium/Workshop on Haskell Pub Date : 2009-09-03 DOI: 10.1145/1596638.1596648
J. Borgström, K. Bhargavan, A. Gordon
{"title":"A compositional theory for STM Haskell","authors":"J. Borgström, K. Bhargavan, A. Gordon","doi":"10.1145/1596638.1596648","DOIUrl":"https://doi.org/10.1145/1596638.1596648","url":null,"abstract":"We address the problem of reasoning about Haskell programs that use Software Transactional Memory (STM). As a motivating example, we consider Haskell code for a concurrent non-deterministic tree rewriting algorithm implementing the operational semantics of the ambient calculus. The core of our theory is a uniform model, in the spirit of process calculi, of the run-time state of multi-threaded STM Haskell programs. The model was designed to simplify both local and compositional reasoning about STM programs. A single reduction relation captures both pure functional computations and also effectful computations in the STM and I/O monads. We state and prove liveness, soundness, completeness, safety, and termination properties relating source processes and their Haskell implementation. Our proof exploits various ideas from concurrency theory, such as the bisimulation technique, but in the setting of a widely used programming language rather than an abstract process calculus. Additionally, we develop an equational theory for reasoning about STM Haskell programs, and establish for the first time equations conjectured by the designers of STM Haskell. We conclude that using a pure functional language extended with STM facilitates reasoning about concurrent implementation code.","PeriodicalId":188691,"journal":{"name":"ACM SIGPLAN Symposium/Workshop on Haskell","volume":"12 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":"132532065","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}
引用次数: 5
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信