Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell最新文献

筛选
英文 中文
Finger trees explained anew, and slightly simplified (functional pearl) 重新解释手指树,并稍微简化(功能珍珠)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409026
Koen Claessen
{"title":"Finger trees explained anew, and slightly simplified (functional pearl)","authors":"Koen Claessen","doi":"10.1145/3406088.3409026","DOIUrl":"https://doi.org/10.1145/3406088.3409026","url":null,"abstract":"We explicitly motivate the subtle intricacies of Hinze and Paterson's Finger Tree datastructure, by step-wise refining a naive implementation. The result is a new explanation of how Finger Trees work and why they have the particular structure they have, and also a small simplification of the original implementation.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125636940","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}
引用次数: 3
Towards secure IoT programming in Haskell 在Haskell中实现安全的物联网编程
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409027
Nachiappan Valliappan, Robert Krook, Alejandro Russo, Koen Claessen
{"title":"Towards secure IoT programming in Haskell","authors":"Nachiappan Valliappan, Robert Krook, Alejandro Russo, Koen Claessen","doi":"10.1145/3406088.3409027","DOIUrl":"https://doi.org/10.1145/3406088.3409027","url":null,"abstract":"IoT applications are often developed in programming languages with low-level abstractions, where a seemingly innocent mistake might lead to severe security vulnerabilities. Current IoT development tools make it hard to identify these vulnerabilities as they do not provide end-to-end guarantees about how data flows within and between appliances. In this work we present Haski, an embedded domain specific language in Haskell (eDSL) for secure programming of IoT devices. Haski enables developers to write Haskell programs that generate C code without falling into many of C’s pitfalls. Haski is designed after the synchronous programming language Lustre, and sports a backwards compatible information-flow control extension to restrict how sensitive data is propagated and modified within the application. We present a novel eDSL design which uses recursive monadic bindings and allows a natural use of functions and pattern-matching in Haskell to write Haski programs. To showcase Haski, we implement a simple smart house controller where communication is done via low-energy Bluetooth on Zephyr OS.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133959799","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
Describing microservices using modern Haskell (experience report) 使用现代Haskell描述微服务(体验报告)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409018
A. Serrano, Flavio Corpa
{"title":"Describing microservices using modern Haskell (experience report)","authors":"A. Serrano, Flavio Corpa","doi":"10.1145/3406088.3409018","DOIUrl":"https://doi.org/10.1145/3406088.3409018","url":null,"abstract":"We present Mu, a domain specific language to describe and develop microservices in Haskell. At its core, Mu provides a type level representation of schemas, which we leverage in various ways. These schemas can be automatically imported from industry-standard interface definition languages. Mu uses many of the type level extensions to GHC, and techniques such as (data type) generic programming and attribute grammars. Apart from the description of the library, we discuss a series of shortcomings in current GHC/Haskell, mostly related to the friendliness of the exposed library interface once complex types enter the scene.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125040322","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
Stitch: the sound type-indexed type checker (functional pearl) 针迹:声音类型索引类型检查器(功能珍珠)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409015
R. Eisenberg
{"title":"Stitch: the sound type-indexed type checker (functional pearl)","authors":"R. Eisenberg","doi":"10.1145/3406088.3409015","DOIUrl":"https://doi.org/10.1145/3406088.3409015","url":null,"abstract":"A classic example of the power of generalized algebraic datatypes (GADTs) to verify a delicate implementation is the type-indexed expression AST. This functional pearl refreshes this example, casting it in modern Haskell using many of GHC's bells and whistles. The Stitch interpreter is a full executable interpreter, with a parser, type checker, common-subexpression elimination, and a REPL. Making heavy use of GADTs and type indices, the Stitch implementation is clean Haskell code and serves as an existence proof that Haskell's type system is advanced enough for the use of fancy types in a practical setting. The paper focuses on guiding the reader through these advanced topics, enabling them to adopt the techniques demonstrated here.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"182 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116101885","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}
引用次数: 3
Type your matrices for great good: a Haskell library of typed matrices and applications (functional pearl) 为您的矩阵提供良好的类型:类型矩阵和应用程序的Haskell库(功能珍珠)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409019
Armando Santos, J. Oliveira
{"title":"Type your matrices for great good: a Haskell library of typed matrices and applications (functional pearl)","authors":"Armando Santos, J. Oliveira","doi":"10.1145/3406088.3409019","DOIUrl":"https://doi.org/10.1145/3406088.3409019","url":null,"abstract":"We study a simple inductive data type for representing correct-by-construction matrices. Despite its simplicity, it can be used to implement matrix-manipulation algorithms efficiently and safely, performing in some cases faster than existing alternatives even though the algorithms are written in a direct and purely functional style. A rich collection of laws makes it possible to derive and optimise these algorithms using equational reasoning, avoiding the notorious off-by-one indexing errors when fiddling with matrix dimensions. We demonstrate the usefulness of the data type on several examples, and highlight connections to related topics in category theory.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128588891","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}
引用次数: 4
Scripted signal functions 脚本信号函数
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409016
David A. Stuart
{"title":"Scripted signal functions","authors":"David A. Stuart","doi":"10.1145/3406088.3409016","DOIUrl":"https://doi.org/10.1145/3406088.3409016","url":null,"abstract":"Programming time-dependent signals like animations involves expressing both continuous and discrete changes in signal values. The method of functional reactive programming (FRP) represents this simply and effectively as discrete modes of an otherwise continuous signal. In variants of FRP based on arrows, programs are composed not of signals but rather functions on signals. Accordingly, these signal functions can switch between discrete modes of operation. However, the literature emphasizes expressions of mode switching that are unnecessarily limited. An analysis of their limitations indicates the need for two new, primitive transformations of signal functions. These transformations help to define a monad that represents signal function modes, and this allows programmers to express switching in an imperative, script-like style. This scripting interface gains flexibility and power from several novel operations, including a general-purpose mapping between modes and a combination that mixes two concurrent modes into one. We demonstrate its usefulness with several examples.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"215 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115457239","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
Composing effects into tasks and workflows 将效果组合到任务和工作流中
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-27 DOI: 10.1145/3406088.3409023
Yves Parès, Jean-Philippe Bernardy, R. Eisenberg
{"title":"Composing effects into tasks and workflows","authors":"Yves Parès, Jean-Philippe Bernardy, R. Eisenberg","doi":"10.1145/3406088.3409023","DOIUrl":"https://doi.org/10.1145/3406088.3409023","url":null,"abstract":"Data science applications tend to be built by composing tasks: discrete manipulations of data. These tasks are arranged in directed acyclic graphs, and many frameworks exist within the data science community supporting such a structure, which is called a workflow. In realistic applications, we want to be able to both analyze a workflow in the absence of data, and to execute the workflow with data. This paper combines effect handlers with arrow-like structures to abstract out data science tasks. This combination of techniques enables a modular design of workflows. Additionally, these workflows can both be analyzed prior to running (e.g., to provide early failure) and run conveniently. Our work is directly motivated by real-world scenarios, and we believe that our approach is applicable to new data science and machine learning applications and frameworks.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130977409","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}
引用次数: 2
Assessing the quality of evolving Haskell systems by measuring structural inequality 通过测量结构不平等来评估演进的Haskell系统的质量
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-09 DOI: 10.1145/3406088.3409014
Sander Kamps, B. Heeren, J. Jeuring
{"title":"Assessing the quality of evolving Haskell systems by measuring structural inequality","authors":"Sander Kamps, B. Heeren, J. Jeuring","doi":"10.1145/3406088.3409014","DOIUrl":"https://doi.org/10.1145/3406088.3409014","url":null,"abstract":"Software metrics are used to measure the quality of a software system, and to understand the evolution of the system's quality over time. In this paper we report on an empirical study that investigates whether structural degradation in Haskell systems is related to decreasing software quality. For our study we use three metrics that measure internal attributes at the level of Haskell modules: intra-modular complexity (cohesion), inter-modular complexity (coupling), and module size. For these metrics, we calculate the Gini coefficient, which is a measure of the inequality in a distribution of values within a certain population, and the deviation of the population's central tendency from an empirically established ideal value. We develop a method to track the evolution, and measure the correlation between the calculated system-level information and post-release defects. The results show that: (1) post-release defects are significantly correlated with the degree of inequality between the size of modules, (2) the inequality measure is able to indicate significant structural shifts in Haskell source code, and (3) the deviation of a population's central tendency from an ideal value can serve as a benchmark to evaluate the structural characteristics of a Haskell system. The results, however, do not show that a combined measure for inequality and ideal value deviation increases the ability to indicate the defect proneness of Haskell source code.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"217 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134367263","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
Eliminating bugs with dependent Haskell (experience report) 消除依赖Haskell的bug(经验报告)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-09 DOI: 10.1145/3406088.3409020
Noam Zilberstein
{"title":"Eliminating bugs with dependent Haskell (experience report)","authors":"Noam Zilberstein","doi":"10.1145/3406088.3409020","DOIUrl":"https://doi.org/10.1145/3406088.3409020","url":null,"abstract":"Using dependent types in production code is a practical way to eliminate errors. While there are many examples of using dependent Haskell to prove invariants about code, few of these are applied to large scale production systems. Critics claim that dependent types are only useful in toy examples and that they are impractical for use in the real world. This experience report analyzes real world examples where dependent types have enabled us to find and eliminate bugs in production Haskell code.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115003857","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}
引用次数: 0
A graded monad for deadlock-free concurrency (functional pearl) 无死锁并发的分级单子(function pearl)
Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell Pub Date : 2020-08-09 DOI: 10.1145/3406088.3409024
Andrej Ivaskovic, A. Mycroft
{"title":"A graded monad for deadlock-free concurrency (functional pearl)","authors":"Andrej Ivaskovic, A. Mycroft","doi":"10.1145/3406088.3409024","DOIUrl":"https://doi.org/10.1145/3406088.3409024","url":null,"abstract":"We present a new type-oriented framework for writing shared memory multithreaded programs that the Haskell type system guarantees are deadlock-free. The implementation wraps all concurrent computation inside a graded monad and assumes a total order is defined between locks. The grades within the type of such a computation specify which locks it acquires and releases. This information is drawn from an algebra that ensures that types can, in principle, be inferred in polynomial time.","PeriodicalId":242706,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126753959","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}
引用次数: 3
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学术文献互助群
群 号:604180095
Book学术官方微信