首页 > 最新文献

Proceedings of the 18th ACM SIGPLAN international conference on Functional programming最新文献

英文 中文
ML: metalanguage or object language? ML:元语言还是对象语言?
M. Gordon
My talk will celebrate Robin Milner's contribution to functional programming via a combination of reminiscences about the early days of ML and speculations about its future.
我的演讲将通过对ML早期的回忆和对其未来的推测来庆祝Robin Milner对函数式编程的贡献。
{"title":"ML: metalanguage or object language?","authors":"M. Gordon","doi":"10.1145/1932681.1863545","DOIUrl":"https://doi.org/10.1145/1932681.1863545","url":null,"abstract":"My talk will celebrate Robin Milner's contribution to functional programming via a combination of reminiscences about the early days of ML and speculations about its future.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"98 1","pages":"1-2"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80803436","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 fresh look at programming with names and binders 使用名称和绑定程序进行编程的全新视角
Nicolas Pouillard, F. Pottier
A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive. In this paper, we present a novel approach to the problem. Our proposal can be viewed either as a programming language design or as a library: in fact, it is currently implemented within Agda. It provides a safe and expressive means of programming with names and binders. It is abstract enough to support multiple concrete implementations: we present one in nominal style and one in de Bruijn style. We use logical relations to prove that "well-typed programs do not mix names with different scope". We exhibit an adequate encoding of Pitts-style nominal terms into our system.
大量的计算机程序,包括编译器和定理证明程序,操作涉及名称和绑定的数据结构。然而,允许以安全和自然的风格执行这些操作的编程习惯用法的设计在很大程度上仍然是难以捉摸的。在本文中,我们提出了一种新的方法来解决这个问题。我们的建议既可以被看作是一种编程语言设计,也可以看作是一个库:事实上,它目前在Agda中实现。它提供了一种使用名称和绑定器进行编程的安全和富有表现力的方法。它足够抽象,可以支持多个具体的实现:我们以标称风格和de Bruijn风格呈现一个。我们使用逻辑关系来证明“类型良好的程序不会混用不同作用域的名字”。我们在我们的系统中充分展示了皮茨式标称项的编码。
{"title":"A fresh look at programming with names and binders","authors":"Nicolas Pouillard, F. Pottier","doi":"10.1145/1863543.1863575","DOIUrl":"https://doi.org/10.1145/1863543.1863575","url":null,"abstract":"A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive.\u0000 In this paper, we present a novel approach to the problem. Our proposal can be viewed either as a programming language design or as a library: in fact, it is currently implemented within Agda. It provides a safe and expressive means of programming with names and binders. It is abstract enough to support multiple concrete implementations: we present one in nominal style and one in de Bruijn style. We use logical relations to prove that \"well-typed programs do not mix names with different scope\". We exhibit an adequate encoding of Pitts-style nominal terms into our system.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"10 4","pages":"217-228"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72609918","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}
引用次数: 38
TeachScheme!: a checkpoint TeachScheme !检查点
M. Felleisen
In 1995, my team and I decided to create an outreach project that would use our research on functional programming to change the K-12 computer science curriculum. We had two different goals in mind. On the one hand, our curriculum should rely on mathematics to teach programming, and it d exploit programming to teach mathematics. All students - not just those who major in computer science - should benefit. On the other hand, our course should demonstrate that introductory programming can focus on program design, not just a specific syntax. We also wished to create a smooth path from a design-oriented introductory course all the way to courses on large software projects. My talk presents a checkpoint of our project, starting with our major scientific goal, a comprehensive theory of program design. Our work on this theory progresses through the development of program design courses for all age groups. At this point, we offer curricular materials for middle schools, high schools, three college-level freshman courses, and a junior-level course on constructing large components. We regularly use these materials to train K-12 teachers, after-school volunteers, and college faculty; thus far, we have reached hundreds of instructors, who in turn have dealt with thousands of students in their classrooms.
1995年,我和我的团队决定创建一个拓展项目,用我们对函数式编程的研究来改变K-12的计算机科学课程。我们有两个不同的目标。一方面,我们的课程要依靠数学来教授程序设计,利用程序设计来教授数学。所有的学生——不仅仅是那些主修计算机科学的学生——都应该从中受益。另一方面,我们的课程应该展示入门编程可以专注于程序设计,而不仅仅是特定的语法。我们也希望从面向设计的入门课程一直到大型软件项目的课程都能有一个平稳的过渡。我的演讲呈现了我们项目的一个检查点,从我们的主要科学目标——程序设计的综合理论——开始。我们对这一理论的研究是通过为所有年龄组开发程序设计课程来进行的。在这一点上,我们提供了初中,高中的课程材料,三个大学水平的大一课程,以及一个构建大型组件的初级课程。我们经常使用这些材料来培训K-12教师、课后志愿者和大学教员;到目前为止,我们已经接触到数百名教师,他们在课堂上辅导了数千名学生。
{"title":"TeachScheme!: a checkpoint","authors":"M. Felleisen","doi":"10.1145/1863543.1863563","DOIUrl":"https://doi.org/10.1145/1863543.1863563","url":null,"abstract":"In 1995, my team and I decided to create an outreach project that would use our research on functional programming to change the K-12 computer science curriculum. We had two different goals in mind. On the one hand, our curriculum should rely on mathematics to teach programming, and it d exploit programming to teach mathematics. All students - not just those who major in computer science - should benefit. On the other hand, our course should demonstrate that introductory programming can focus on program design, not just a specific syntax. We also wished to create a smooth path from a design-oriented introductory course all the way to courses on large software projects.\u0000 My talk presents a checkpoint of our project, starting with our major scientific goal, a comprehensive theory of program design. Our work on this theory progresses through the development of program design courses for all age groups. At this point, we offer curricular materials for middle schools, high schools, three college-level freshman courses, and a junior-level course on constructing large components. We regularly use these materials to train K-12 teachers, after-school volunteers, and college faculty; thus far, we have reached hundreds of instructors, who in turn have dealt with thousands of students in their classrooms.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"55 1","pages":"129-130"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78299278","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
Polyvariant flow analysis with higher-ranked polymorphic types and higher-order effect operators 具有高阶多态类型和高阶效应算子的多变流分析
Stefan Holdermans, Jurriaan Hage
We present a type and effect system for flow analysis that makes essential use of higher-ranked polymorphism. We show that, for higher-order functions, the expressiveness of higher-ranked types enables us to improve on the precision of conventional let-polymorphic analyses. Modularity and decidability of the analysis are guaranteed by making the analysis of each program parametric in the analyses of its inputs; in particular, we have that higher-order functions give rise to higher-order operations on effects. As flow typing is archetypical to a whole class of type and effect systems, our approach can be used to boost the precision of a wide range of type-based program analyses for higher-order languages.
我们提出了一个流分析的类型和效果系统,它充分利用了高阶多态性。我们表明,对于高阶函数,高阶类型的表达性使我们能够提高传统的多态分析的精度。通过对每个程序的输入进行参数化分析,保证了分析的模块化和可判定性;特别地,我们知道高阶函数会产生高阶运算。由于流类型是一整类类型和效果系统的原型,我们的方法可以用来提高高阶语言中基于类型的程序分析的精度。
{"title":"Polyvariant flow analysis with higher-ranked polymorphic types and higher-order effect operators","authors":"Stefan Holdermans, Jurriaan Hage","doi":"10.1145/1863543.1863554","DOIUrl":"https://doi.org/10.1145/1863543.1863554","url":null,"abstract":"We present a type and effect system for flow analysis that makes essential use of higher-ranked polymorphism. We show that, for higher-order functions, the expressiveness of higher-ranked types enables us to improve on the precision of conventional let-polymorphic analyses. Modularity and decidability of the analysis are guaranteed by making the analysis of each program parametric in the analyses of its inputs; in particular, we have that higher-order functions give rise to higher-order operations on effects. As flow typing is archetypical to a whole class of type and effect systems, our approach can be used to boost the precision of a wide range of type-based program analyses for higher-order languages.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"43 1","pages":"63-74"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79327628","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
Using functional programming within an industrial product group: perspectives and perceptions 在工业产品组中使用函数式编程:观点和看法
Dave Scott, Richard Sharp, T. Gazagnaire, Anil Madhavapeddy
We present a case-study of using OCaml within a large product development project, focussing on both the technical and non-technical issues that arose as a result. We draw comparisons between the OCaml team and the other teams that worked on the project, providing comparative data on hiring patterns and cross-team code contribution.
我们提供了一个在大型产品开发项目中使用OCaml的案例研究,重点关注由此产生的技术和非技术问题。我们比较了OCaml团队和其他参与项目的团队,提供了雇佣模式和跨团队代码贡献方面的比较数据。
{"title":"Using functional programming within an industrial product group: perspectives and perceptions","authors":"Dave Scott, Richard Sharp, T. Gazagnaire, Anil Madhavapeddy","doi":"10.1145/1863543.1863557","DOIUrl":"https://doi.org/10.1145/1863543.1863557","url":null,"abstract":"We present a case-study of using OCaml within a large product development project, focussing on both the technical and non-technical issues that arose as a result. We draw comparisons between the OCaml team and the other teams that worked on the project, providing comparative data on hiring patterns and cross-team code contribution.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"8 1","pages":"87-92"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89390790","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}
引用次数: 18
A play on regular expressions: functional pearl 正则表达式的一个游戏:函数珍珠
Sebastian Fischer, F. Huch, T. Wilke
Cody, Hazel, and Theo, two experienced Haskell programmers and an expert in automata theory, develop an elegant Haskell program for matching regular expressions: (i) the program is purely functional; (ii) it is overloaded over arbitrary semirings, which not only allows to solve the ordinary matching problem but also supports other applications like computing leftmost longest matchings or the number of matchings, all with a single algorithm; (iii) it is more powerful than other matchers, as it can be used for parsing every context-free language by taking advantage of laziness. The developed program is based on an old technique to turn regular expressions into finite automata which makes it efficient both in terms of worst-case time and space bounds and actual performance: despite its simplicity, the Haskell implementation can compete with a recently published professional C++ program for the same problem.
Cody, Hazel和Theo,两位经验丰富的Haskell程序员和自动机理论专家,开发了一个优雅的Haskell程序来匹配正则表达式:(i)该程序是纯函数式的;(ii)在任意半环上重载,不仅可以解决普通的匹配问题,而且还支持其他应用,如计算最左最长匹配或匹配数量,所有这些都用一个算法;(iii)它比其他匹配器更强大,因为它可以通过利用惰性来解析任何与上下文无关的语言。开发的程序基于一种将正则表达式转换为有限自动机的旧技术,这使得它在最坏情况的时间和空间界限以及实际性能方面都很有效:尽管它很简单,Haskell实现可以与最近发布的专业c++程序竞争相同的问题。
{"title":"A play on regular expressions: functional pearl","authors":"Sebastian Fischer, F. Huch, T. Wilke","doi":"10.1145/1863543.1863594","DOIUrl":"https://doi.org/10.1145/1863543.1863594","url":null,"abstract":"Cody, Hazel, and Theo, two experienced Haskell programmers and an expert in automata theory, develop an elegant Haskell program for matching regular expressions: (i) the program is purely functional; (ii) it is overloaded over arbitrary semirings, which not only allows to solve the ordinary matching problem but also supports other applications like computing leftmost longest matchings or the number of matchings, all with a single algorithm; (iii) it is more powerful than other matchers, as it can be used for parsing every context-free language by taking advantage of laziness.\u0000 The developed program is based on an old technique to turn regular expressions into finite automata which makes it efficient both in terms of worst-case time and space bounds and actual performance: despite its simplicity, the Haskell implementation can compete with a recently published professional C++ program for the same problem.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"22 1","pages":"357-368"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85501379","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}
引用次数: 35
Instance chains: type class programming without overlapping instances 实例链:没有重叠实例的类型类编程
J. Garrett Morris, Mark P. Jones
Type classes have found a wide variety of uses in Haskell programs, from simple overloading of operators (such as equality or ordering) to complex invariants used to implement type-safe heterogeneous lists or limited subtyping. Unfortunately, many of the richer uses of type classes require extensions to the class system that have been incompletely described in the research literature and are not universally accepted within the Haskell community. This paper describes a new type class system, implemented in a prototype tool called ilab, that simplifies and enhances Haskell-style type-class programming. In ilab, we replace overlapping instances with a new feature, instance chains, allowing explicit alternation and failure in instance declarations. We describe a technique for ascribing semantics to type class systems, relating classes, instances, and class constraints (such as kind signatures or functional dependencies) directly to a set-theoretic model of relations on types. Finally, we give a semantics for ilab and describe its implementation.
类型类在Haskell程序中有各种各样的用途,从简单的操作符重载(如相等或排序)到用于实现类型安全的异构列表或有限子类型的复杂不变量。不幸的是,类型类的许多更丰富的用途需要对类系统进行扩展,这些扩展在研究文献中没有得到完整的描述,并且在Haskell社区中没有被普遍接受。本文描述了一个新的类型类系统,该系统在一个名为ilab的原型工具中实现,它简化并增强了haskell风格的类型类编程。在ilab中,我们用一个新特性——实例链——替换了重叠的实例,允许在实例声明中显式地改变和失败。我们描述了一种将语义归因于类型类系统的技术,将类、实例和类约束(如类签名或功能依赖)直接关联到类型关系的集合论模型。最后,给出了ilab的语义,并描述了其实现。
{"title":"Instance chains: type class programming without overlapping instances","authors":"J. Garrett Morris, Mark P. Jones","doi":"10.1145/1863543.1863596","DOIUrl":"https://doi.org/10.1145/1863543.1863596","url":null,"abstract":"Type classes have found a wide variety of uses in Haskell programs, from simple overloading of operators (such as equality or ordering) to complex invariants used to implement type-safe heterogeneous lists or limited subtyping. Unfortunately, many of the richer uses of type classes require extensions to the class system that have been incompletely described in the research literature and are not universally accepted within the Haskell community.\u0000 This paper describes a new type class system, implemented in a prototype tool called ilab, that simplifies and enhances Haskell-style type-class programming. In ilab, we replace overlapping instances with a new feature, instance chains, allowing explicit alternation and failure in instance declarations. We describe a technique for ascribing semantics to type class systems, relating classes, instances, and class constraints (such as kind signatures or functional dependencies) directly to a set-theoretic model of relations on types. Finally, we give a semantics for ilab and describe its implementation.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"44 1","pages":"375-386"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90906231","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}
引用次数: 36
Distance makes the types grow stronger: a calculus for differential privacy 距离使这类人变得更强:这是一种差分隐私的微积分
J. Reed, B. Pierce
We want assurances that sensitive information will not be disclosed when aggregate data derived from a database is published. Differential privacy offers a strong statistical guarantee that the effect of the presence of any individual in a database will be negligible, even when an adversary has auxiliary knowledge. Much of the prior work in this area consists of proving algorithms to be differentially private one at a time; we propose to streamline this process with a functional language whose type system automatically guarantees differential privacy, allowing the programmer to write complex privacy-safe query programs in a flexible and compositional way. The key novelty is the way our type system captures function sensitivity, a measure of how much a function can magnify the distance between similar inputs: well-typed programs not only can't go wrong, they can't go too far on nearby inputs. Moreover, by introducing a monad for random computations, we can show that the established definition of differential privacy falls out naturally as a special case of this soundness principle. We develop examples including known differentially private algorithms, privacy-aware variants of standard functional programming idioms, and compositionality principles for differential privacy.
我们希望在发布来自数据库的汇总数据时保证敏感信息不会泄露。差异隐私提供了一个强有力的统计保证,即数据库中任何个人的存在的影响都可以忽略不计,即使对手有辅助知识。该领域的许多先前工作包括每次证明一个算法是差分私有的;我们建议用一种函数式语言来简化这个过程,这种语言的类型系统自动保证差异隐私,允许程序员以灵活和组合的方式编写复杂的隐私安全查询程序。关键的新奇之处在于我们的类型系统捕捉函数灵敏度的方式,函数灵敏度是一种度量函数可以在多大程度上放大相似输入之间的距离的方法:类型良好的程序不仅不会出错,而且不会在附近的输入上走得太远。此外,通过引入随机计算的单子,我们可以证明差分隐私的既定定义自然地成为该稳健性原则的特殊情况。我们开发的示例包括已知的差分私有算法、标准函数式编程习惯的隐私感知变体以及差分隐私的组合性原则。
{"title":"Distance makes the types grow stronger: a calculus for differential privacy","authors":"J. Reed, B. Pierce","doi":"10.1145/1863543.1863568","DOIUrl":"https://doi.org/10.1145/1863543.1863568","url":null,"abstract":"We want assurances that sensitive information will not be disclosed when aggregate data derived from a database is published. Differential privacy offers a strong statistical guarantee that the effect of the presence of any individual in a database will be negligible, even when an adversary has auxiliary knowledge. Much of the prior work in this area consists of proving algorithms to be differentially private one at a time; we propose to streamline this process with a functional language whose type system automatically guarantees differential privacy, allowing the programmer to write complex privacy-safe query programs in a flexible and compositional way.\u0000 The key novelty is the way our type system captures function sensitivity, a measure of how much a function can magnify the distance between similar inputs: well-typed programs not only can't go wrong, they can't go too far on nearby inputs. Moreover, by introducing a monad for random computations, we can show that the established definition of differential privacy falls out naturally as a special case of this soundness principle. We develop examples including known differentially private algorithms, privacy-aware variants of standard functional programming idioms, and compositionality principles for differential privacy.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"83 1 1","pages":"157-168"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84230067","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}
引用次数: 248
Rethinking supercompilation 反思supercompilation
Neil Mitchell
Supercompilation is a program optimisation technique that is particularly effective at eliminating unnecessary overheads. We have designed a new supercompiler, making many novel choices, including different termination criteria and handling of let bindings. The result is a supercompiler that focuses on simplicity, compiles programs quickly and optimises programs well. We have benchmarked our supercompiler, with some programs running more than twice as fast than when compiled with GHC.
超编译是一种程序优化技术,在消除不必要的开销方面特别有效。我们设计了一个新的超级编译器,它做出了许多新颖的选择,包括不同的终止标准和let绑定的处理。其结果是一个超级编译器,专注于简单性,快速编译程序和优化程序。我们已经对我们的超级编译器进行了基准测试,有些程序的运行速度比用GHC编译时快两倍以上。
{"title":"Rethinking supercompilation","authors":"Neil Mitchell","doi":"10.1145/1863543.1863588","DOIUrl":"https://doi.org/10.1145/1863543.1863588","url":null,"abstract":"Supercompilation is a program optimisation technique that is particularly effective at eliminating unnecessary overheads. We have designed a new supercompiler, making many novel choices, including different termination criteria and handling of let bindings. The result is a supercompiler that focuses on simplicity, compiles programs quickly and optimises programs well. We have benchmarked our supercompiler, with some programs running more than twice as fast than when compiled with GHC.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"28 1","pages":"309-320"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81485997","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}
引用次数: 50
Experience report: growing programming languages for beginning students 经验报告:为初学者开发编程语言
Marcus Crestani, Michael Sperber
A student learning how to program learns best when the programming language and programming environment cater to her specific needs. These needs are different from the requirements of a professional programmer. Consequently, the design of teaching languages poses challenges different from the design of professional languages. Using a functional language by itself gives advantages over more popular, professional languages, but fully exploiting these advantages requires careful adaptation to the needs of the students' as-is, these languages do not support the students nearly as well as they could. This paper describes our experience adopting the didactic approach of How to Design Programs, focussing on the design process for our own set of teaching languages. We have observed students as they try to program as part of our introductory course, and used these observations to significantly improve the design of these languages. This paper describes the changes we have made, and the journey we took to get there.
当编程语言和编程环境满足学生的特定需求时,学习编程的学生学得最好。这些需求不同于专业程序员的需求。因此,教学语言的设计面临着不同于专业语言设计的挑战。使用函数式语言本身比更流行的专业语言有优势,但充分利用这些优势需要仔细适应学生的现状,这些语言并没有尽可能地支持学生。本文描述了我们采用“如何设计程序”教学方法的经验,重点介绍了我们自己的一套教学语言的设计过程。作为入门课程的一部分,我们观察了学生编程的过程,并利用这些观察来显著改进这些语言的设计。这篇文章描述了我们所做的改变,以及我们实现这些改变的过程。
{"title":"Experience report: growing programming languages for beginning students","authors":"Marcus Crestani, Michael Sperber","doi":"10.1145/1863543.1863576","DOIUrl":"https://doi.org/10.1145/1863543.1863576","url":null,"abstract":"A student learning how to program learns best when the programming language and programming environment cater to her specific needs. These needs are different from the requirements of a professional programmer. Consequently, the design of teaching languages poses challenges different from the design of professional languages. Using a functional language by itself gives advantages over more popular, professional languages, but fully exploiting these advantages requires careful adaptation to the needs of the students' as-is, these languages do not support the students nearly as well as they could. This paper describes our experience adopting the didactic approach of How to Design Programs, focussing on the design process for our own set of teaching languages. We have observed students as they try to program as part of our introductory course, and used these observations to significantly improve the design of these languages. This paper describes the changes we have made, and the journey we took to get there.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"73 1","pages":"229-234"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89426695","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}
引用次数: 17
期刊
Proceedings of the 18th ACM SIGPLAN international conference on 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