首页 > 最新文献

Proceedings of the 1988 ACM conference on LISP and functional programming最新文献

英文 中文
Abstract continuations: a mathematical semantics for handling full jumps 抽象延续:处理全跳转的数学语义
Pub Date : 1988-01-01 DOI: 10.1145/62678.62684
M. Felleisen, M. Wand, Daniel P. Friedman, B. Duba
Continuation semantics is the traditional mathematical formalism for specifying the semantics of non-local control operations. Modern Lisp-style languages, however, contain advanced control structures like full functional jumps and control delimiters for which continuation semantics is insufficient. We solve this problem by introducing an abstract domain of rests of computations with appropriate operations. Beyond being useful for the problem at hand, these abstract continuations turn out to have applications in a much broader context, e.g., the explication of parallelism, the modeling of control facilities in parallel languages, and the design of new control structures.
延拓语义是用于指定非局部控制操作语义的传统数学形式。然而,现代lisp风格的语言包含了高级的控制结构,如全功能跳转和控制分隔符,而对于这些结构,延续语义是不够的。我们通过引入一个抽象的余量计算域和适当的运算来解决这个问题。除了对手头的问题有用之外,这些抽象的延续在更广泛的上下文中也有应用,例如,并行性的解释,并行语言控制工具的建模,以及新的控制结构的设计。
{"title":"Abstract continuations: a mathematical semantics for handling full jumps","authors":"M. Felleisen, M. Wand, Daniel P. Friedman, B. Duba","doi":"10.1145/62678.62684","DOIUrl":"https://doi.org/10.1145/62678.62684","url":null,"abstract":"Continuation semantics is the traditional mathematical formalism for specifying the semantics of non-local control operations. Modern Lisp-style languages, however, contain advanced control structures like full functional jumps and control delimiters for which continuation semantics is insufficient. We solve this problem by introducing an abstract domain of rests of computations with appropriate operations. Beyond being useful for the problem at hand, these abstract continuations turn out to have applications in a much broader context, e.g., the explication of parallelism, the modeling of control facilities in parallel languages, and the design of new control structures.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"10 3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130135377","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}
引用次数: 79
Graphinators and the duality of SIMD and MIMD 绘图器与SIMD和MIMD的对偶性
Pub Date : 1988-01-01 DOI: 10.1145/62678.62714
P. Hudak, Eric Mohr
Combinator reduction is a well-known implementation technique for executing functional programs. In this paper we present a new method for parallel combinator reduction based on viewing combinators simply as “graph mutators.” We show that each combinator in Turner's standard set can be expressed using two primitive operations on a binary graph — one to alter an edge and one to insert a vertex — and four symmetric variants of them. We call these primitive operations graphinators, and present a single 7-step graphinator sequence which implements the reduction rules for all combinators in the set. This sequence allows redexes involving any of the combinators to be reduced in parallel on a SIMD machine. We have implemented a graph reducer on the Connection Machine based on these results, together with a novel execution strategy called prudent evaluation. Preliminary performance results suggest that our implementation does reasonably well, significantly better than previous efforts, but perhaps still not well enough to be practical. Nevertheless, the approach suggests a new way of thinking about program execution, and we have thoughts on how to improve our implementation.
组合子约简是执行函数式程序的一种众所周知的实现技术。本文提出了一种新的并行组合子约简方法,该方法将组合子简单地看作“图突变子”。我们证明了Turner标准集中的每个组合子都可以用二值图上的两个基本操作来表示——一个是改变一条边,一个是插入一个顶点——以及它们的四个对称变体。我们称这些基本运算为画符,并给出了一个7步画符序列,该序列实现了集合中所有组合子的约简规则。该序列允许在SIMD机器上并行地减少涉及任何组合子的索引。基于这些结果,我们在连接机上实现了一个图形减速器,以及一种称为谨慎评估的新执行策略。初步的性能结果表明,我们的实现做得相当好,明显好于以前的努力,但可能还不够好,无法付诸实践。尽管如此,这种方法提出了一种思考程序执行的新方法,我们对如何改进我们的实现有了一些想法。
{"title":"Graphinators and the duality of SIMD and MIMD","authors":"P. Hudak, Eric Mohr","doi":"10.1145/62678.62714","DOIUrl":"https://doi.org/10.1145/62678.62714","url":null,"abstract":"Combinator reduction is a well-known implementation technique for executing functional programs. In this paper we present a new method for parallel combinator reduction based on viewing combinators simply as “graph mutators.” We show that each combinator in Turner's standard set can be expressed using two primitive operations on a binary graph — one to alter an edge and one to insert a vertex — and four symmetric variants of them. We call these primitive operations graphinators, and present a single 7-step graphinator sequence which implements the reduction rules for all combinators in the set. This sequence allows redexes involving any of the combinators to be reduced in parallel on a SIMD machine. We have implemented a graph reducer on the Connection Machine based on these results, together with a novel execution strategy called prudent evaluation. Preliminary performance results suggest that our implementation does reasonably well, significantly better than previous efforts, but perhaps still not well enough to be practical. Nevertheless, the approach suggests a new way of thinking about program execution, and we have thoughts on how to improve our implementation.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133804282","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}
引用次数: 41
An implementation of standard ML modules 标准ML模块的实现
Pub Date : 1988-01-01 DOI: 10.1145/62678.62704
David B. MacQueen
Standard ML includes a set of module constructs that support programming in the large. These constructs extend ML's basic polymorphic type system by introducing the dependent types of Martin Löf's Intuitionistic Type Theory. This paper discusses the problems involved in implementing Standard ML's modules and describes a practical, efficient solution to these problems. The representations and algorithms of this implementation were inspired by a detailed formal semantics of Standard ML developed by Milner, Tofte, and Harper. The implementation is part of a new Standard ML compiler that is written in Standard ML using the module system.
标准ML包括一组模块结构,支持大规模编程。这些结构通过引入Martin Löf的直觉类型理论的依赖类型扩展了ML的基本多态类型系统。本文讨论了实现标准机器学习模块所涉及的问题,并描述了一个实用、高效的解决这些问题的方案。该实现的表示和算法受到Milner、Tofte和Harper开发的标准ML的详细形式化语义的启发。该实现是使用模块系统用标准ML编写的新的标准ML编译器的一部分。
{"title":"An implementation of standard ML modules","authors":"David B. MacQueen","doi":"10.1145/62678.62704","DOIUrl":"https://doi.org/10.1145/62678.62704","url":null,"abstract":"Standard ML includes a set of module constructs that support programming in the large. These constructs extend ML's basic polymorphic type system by introducing the dependent types of Martin Löf's Intuitionistic Type Theory. This paper discusses the problems involved in implementing Standard ML's modules and describes a practical, efficient solution to these problems. The representations and algorithms of this implementation were inspired by a detailed formal semantics of Standard ML developed by Milner, Tofte, and Harper. The implementation is part of a new Standard ML compiler that is written in Standard ML using the module system.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"119 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116611102","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
Type inference and semi-unification 类型推理和半统一
Pub Date : 1988-01-01 DOI: 10.1145/62678.62701
F. Henglein
The Milner Calculus is the typed &lgr;-calculus underlying the type system for the programming language ML [Har86] and several other strongly typed polymorphic functional languages such as Miranda [Tur86] and SPS [Wan84]. Mycroft [Myc84] extended the problematical typing rule for recursive definitions and proved that the resulting calculus, termed Milner-Mycroft Calculus here, is sound with respect to Milner's [Mil78] semantics and that it preserves the principal typing property [DM82] of the Milner Calculus. The extension is of practical significance in typed logic programming languages [MO84] and, more generally, in any language with (mutually) recursive definitions. Mycroft didn't solve the decidability problem for typings in this calculus, though. This was an open problem independently raised also by Meertens [Mee83]. The decidability question was answered in the affirmative just recently by Kfoury et al. in [KTU88]. We show that the type inference problems in the Milner and the Milner-Mycroft Calculi can be reduced to solving equations and inequations between first-order terms, a problem we have termed semi-unification. We show that semi-unification problems have most general solutions in analogy to unification problems — which translates into principal typing properties for the underlying calculi. In contrast to the (essentially) nonconstructive methods of [KTU88] we present functional specifications, which we prove partially correct, for computing the most general solution of semi-unification problems, and we devise a concrete nondeterministic algorithm on a graph-theoretic representation for computing these most general solutions. Finally, we point out some erroneous statements about the efficiency of polymorphic type checking that have persisted throughout the literature including an incorrect claim, submitted by ourselves, of polynomial time type checking in the Milner-Mycroft Calculus.
米尔纳演算是编程语言ML [Har86]和其他几种强类型多态函数式语言(如Miranda [Tur86]和SPS [Wan84])的类型系统的类型化演算。Mycroft [Myc84]扩展了递归定义的有问题的类型规则,并证明了由此产生的微积分(此处称为Milner-Mycroft微积分)在Milner [Mil78]语义方面是合理的,并且它保留了Milner微积分的主要类型属性[DM82]。这种扩展在类型化逻辑编程语言中具有实际意义[MO84],更一般地说,在任何具有(相互)递归定义的语言中都具有实际意义。不过,麦考夫并没有解决这个微积分中类型的可判定性问题。这也是Meertens [Mee83]独立提出的一个开放性问题。最近,Kfoury等人在[KTU88]中对可决性问题给出了肯定的回答。我们证明了米尔纳和米尔纳-麦考夫微积分中的类型推理问题可以简化为求解一阶项之间的方程和不等式,我们称之为半统一问题。我们表明,半统一问题具有与统一问题类似的最一般的解决方案-这转化为底层微积分的主要类型属性。与[KTU88]的(本质上)非构造方法相反,我们提出了功能规范,我们证明了部分正确,用于计算半统一问题的最一般解,并且我们在图论表示上设计了一个具体的非确定性算法来计算这些最一般解。最后,我们指出了一些关于多态类型检查效率的错误陈述,这些陈述一直存在于整个文献中,包括我们自己提交的关于Milner-Mycroft微积分中多项式时间类型检查的错误主张。
{"title":"Type inference and semi-unification","authors":"F. Henglein","doi":"10.1145/62678.62701","DOIUrl":"https://doi.org/10.1145/62678.62701","url":null,"abstract":"The Milner Calculus is the typed &lgr;-calculus underlying the type system for the programming language ML [Har86] and several other strongly typed polymorphic functional languages such as Miranda [Tur86] and SPS [Wan84]. Mycroft [Myc84] extended the problematical typing rule for recursive definitions and proved that the resulting calculus, termed Milner-Mycroft Calculus here, is sound with respect to Milner's [Mil78] semantics and that it preserves the principal typing property [DM82] of the Milner Calculus. The extension is of practical significance in typed logic programming languages [MO84] and, more generally, in any language with (mutually) recursive definitions. Mycroft didn't solve the decidability problem for typings in this calculus, though. This was an open problem independently raised also by Meertens [Mee83]. The decidability question was answered in the affirmative just recently by Kfoury et al. in [KTU88]. We show that the type inference problems in the Milner and the Milner-Mycroft Calculi can be reduced to solving equations and inequations between first-order terms, a problem we have termed semi-unification. We show that semi-unification problems have most general solutions in analogy to unification problems — which translates into principal typing properties for the underlying calculi. In contrast to the (essentially) nonconstructive methods of [KTU88] we present functional specifications, which we prove partially correct, for computing the most general solution of semi-unification problems, and we devise a concrete nondeterministic algorithm on a graph-theoretic representation for computing these most general solutions. Finally, we point out some erroneous statements about the efficiency of polymorphic type checking that have persisted throughout the literature including an incorrect claim, submitted by ourselves, of polynomial time type checking in the Milner-Mycroft Calculus.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121784342","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}
引用次数: 60
An open-ended data representation model for EU_LISP EU_LISP的开放式数据表示模型
Pub Date : 1988-01-01 DOI: 10.1145/62678.62722
C. Queinnec, P. Cointe
The goal of this paper is to describe an open-ended type system for Lisp with explicit and full control of bit-level data representations. This description uses a reflective architecture based on a metatype facility. This low-level formalism solves the problem of an harmonious design of a class taxononomy inside a type system. A prototype for this framework has been written in Le-Lisp and is used to build the integrated type and object systems of the EU_LISP proposal.
本文的目标是描述一个开放的Lisp类型系统,该系统具有对位级数据表示的显式和完全控制。此描述使用基于元类型功能的反射体系结构。这种低级的形式化解决了在类型系统中协调类分类法设计的问题。该框架的原型已经用Le-Lisp编写,并用于构建EU_LISP提案的集成类型和对象系统。
{"title":"An open-ended data representation model for EU_LISP","authors":"C. Queinnec, P. Cointe","doi":"10.1145/62678.62722","DOIUrl":"https://doi.org/10.1145/62678.62722","url":null,"abstract":"The goal of this paper is to describe an open-ended type system for Lisp with explicit and full control of bit-level data representations. This description uses a reflective architecture based on a metatype facility. This low-level formalism solves the problem of an harmonious design of a class taxononomy inside a type system. A prototype for this framework has been written in Le-Lisp and is used to build the integrated type and object systems of the EU_LISP proposal.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125122389","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
Concrete syntax for data objects in functional languages 函数式语言中数据对象的具体语法
Pub Date : 1988-01-01 DOI: 10.1145/62678.62688
Annika Aasa, Kent Petersson, Dan Synek
Many functional languages have a construction to define inductive data types [Hoa75] (also called general :structured types [Pey87], structures [Lan64], datatypes [Mil84] and free algebras [GTWW77]). An inductive defin.ition of a data type can also be seen as a grammar for at language and the elements of the data type as the phrases of the language. So defining an inductive data type can be seen as introducing an embedded language of values into the programming language. This correspondence is however not fully exploited in existing functional languages. The elements can presently only be written in a very restricted form. They are just the parse trees of the elements written in prefix form. A generalization, that we will consider in this paper, is to allow the elements to be written in a more general form. Instead of directly writing the parse trees of the embedded language, we would like to use a more concrete syntactical form and let an automatically generated parser translate the concrete syntactical form to the corresponding parse tree. We think that this is especi.ally useful when we manipulate languages in programs, for example, when implementing compilers, interpreters, program transformation systems, and programming logics. It is also convenient if we want to use the concrete syntax for other kinds of data in a program.
许多函数式语言都有定义归纳数据类型的构造[Hoa75](也称为通用:结构化类型[Pey87]、结构类型[Lan64]、数据类型[Mil84]和自由代数[GTWW77])。归纳定义。数据类型的定义也可以看作是一种语言的语法,数据类型的元素可以看作是该语言的短语。因此,定义归纳数据类型可以看作是在编程语言中引入了一种嵌入式值语言。然而,这种对应关系在现有的函数式语言中没有得到充分利用。元素目前只能以非常有限的形式编写。它们只是以前缀形式编写的元素的解析树。我们将在本文中考虑的概括是,允许以更一般的形式编写元素。我们不直接编写嵌入式语言的解析树,而是希望使用更具体的语法形式,并让自动生成的解析器将具体的语法形式转换为相应的解析树。我们认为这是特别的。当我们在程序中操作语言时非常有用,例如,在实现编译器、解释器、程序转换系统和编程逻辑时。如果我们想在程序中对其他类型的数据使用具体语法,它也很方便。
{"title":"Concrete syntax for data objects in functional languages","authors":"Annika Aasa, Kent Petersson, Dan Synek","doi":"10.1145/62678.62688","DOIUrl":"https://doi.org/10.1145/62678.62688","url":null,"abstract":"Many functional languages have a construction to define inductive data types [Hoa75] (also called general :structured types [Pey87], structures [Lan64], datatypes [Mil84] and free algebras [GTWW77]). An inductive defin.ition of a data type can also be seen as a grammar for at language and the elements of the data type as the phrases of the language. So defining an inductive data type can be seen as introducing an embedded language of values into the programming language. This correspondence is however not fully exploited in existing functional languages. The elements can presently only be written in a very restricted form. They are just the parse trees of the elements written in prefix form. A generalization, that we will consider in this paper, is to allow the elements to be written in a more general form. Instead of directly writing the parse trees of the embedded language, we would like to use a more concrete syntactical form and let an automatically generated parser translate the concrete syntactical form to the corresponding parse tree. We think that this is especi.ally useful when we manipulate languages in programs, for example, when implementing compilers, interpreters, program transformation systems, and programming logics. It is also convenient if we want to use the concrete syntax for other kinds of data in a program.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125518232","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}
引用次数: 27
Buckwheat: graph reduction on a shared-memory multiprocessor 荞麦:在共享内存多处理器上的图形缩减
Pub Date : 1988-01-01 DOI: 10.1145/62678.62683
B. Goldberg
Buckwheat is a working implementation of a functional language on the Encore Multimax multiprocessor. It is based on a heterogeneous abstract machine model consisting of both graph reduction and stack oriented execution. Buckwheat consists of two major components: a compiler and a run-time system. The task of the compiler is to detect the exploitable parallelism in programs written in ALFL, a conventional functional language. The run-time system supports processor scheduling, dynamic typing and storage management. In this paper we describe the organization, execution model, and scheduling policies of the Buckwheat run-time system. A large number of experiments have been performed and we present the results.
荞麦是一个在Encore multiax多处理器上的函数式语言的工作实现。它基于异构抽象机器模型,包括图约简和面向堆栈的执行。荞麦由两个主要组件组成:编译器和运行时系统。编译器的任务是检测用ALFL(一种传统的函数式语言)编写的程序中可利用的并行性。运行时系统支持处理器调度、动态类型和存储管理。本文描述了荞麦运行时系统的组织、执行模型和调度策略。我们进行了大量的实验,并给出了实验结果。
{"title":"Buckwheat: graph reduction on a shared-memory multiprocessor","authors":"B. Goldberg","doi":"10.1145/62678.62683","DOIUrl":"https://doi.org/10.1145/62678.62683","url":null,"abstract":"Buckwheat is a working implementation of a functional language on the Encore Multimax multiprocessor. It is based on a heterogeneous abstract machine model consisting of both graph reduction and stack oriented execution. Buckwheat consists of two major components: a compiler and a run-time system. The task of the compiler is to detect the exploitable parallelism in programs written in ALFL, a conventional functional language. The run-time system supports processor scheduling, dynamic typing and storage management. In this paper we describe the organization, execution model, and scheduling policies of the Buckwheat run-time system. A large number of experiments have been performed and we present the results.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130104233","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}
引用次数: 23
Intensions and extensions in a reflective tower 反射塔的内涵和延伸
Pub Date : 1988-01-01 DOI: 10.1145/62678.62725
O. Danvy, Karoline Malmkjær
This article presents a model of the reflective tower based on the formal semantics of its levels. They are related extensionally by their mutual interpretation and intensionally by reification and reflection. The key points obtained here are: a formal relation between the semantic domains of each level; a formal identification of reification and reflection; the visualisation of intensional snapshots of a tower of interpreters; a formal justification and a generalization of Brown's meta-continuation; a (structural) denotational semantics for a compositional subset of the model; the distinction between making continuations jumpy and pushy; the discovery of the tail-reflection property; and a Scheme implementation of a properly tail-reflective and single-threaded reflective tower. Section 1 presents the new approach taken here: rather than implementing reification and reflection leading to a tower, we consider an infinite tower described by the semantics of each level and relate these by reification and reflection. Meta-circularity then gives sufficient conditions for implementing it. Section 2 investigates some aspects of the environments and control in a reflective tower. An analog of the funarg problem is pointed out, in relation with the correct environment at reification time. Jumpy and pushy continuations are contrasted, and the notions of ephemeral level and proper tail-reflection are introduced. Our approach is compared with related work and after a conclusion, some issues are proposed.
本文提出了一种基于层次形式语义的反射塔模型。它们通过相互解释而广泛地联系在一起,通过具体化和反思而紧密地联系在一起。本文得到的要点是:各层次语义域之间的形式化关系;具体化和反思的正式识别;一群口译员的深入快照的可视化;布朗元延拓理论的形式论证和概括;模型的组合子集的(结构)指称语义;让续作跳跃和咄咄逼人之间的区别;尾反射特性的发现;以及一个适当的尾部反射和单线程反射塔的Scheme实现。第1节介绍了这里采用的新方法:我们考虑由每个层次的语义描述的无限塔,而不是实现导致塔的具体化和反射,并通过具体化和反射将它们联系起来。然后,元循环为实现它提供了充分的条件。第2节研究了反射塔中环境和控制的某些方面。指出了一个类似的真菌问题,与正确的环境在具体化的时候。对跳跃延拓和推进延拓进行了对比,并引入了瞬变水平和适当尾反射的概念。将本文的方法与相关工作进行了比较,并在总结后提出了一些问题。
{"title":"Intensions and extensions in a reflective tower","authors":"O. Danvy, Karoline Malmkjær","doi":"10.1145/62678.62725","DOIUrl":"https://doi.org/10.1145/62678.62725","url":null,"abstract":"This article presents a model of the reflective tower based on the formal semantics of its levels. They are related extensionally by their mutual interpretation and intensionally by reification and reflection. The key points obtained here are: a formal relation between the semantic domains of each level; a formal identification of reification and reflection; the visualisation of intensional snapshots of a tower of interpreters; a formal justification and a generalization of Brown's meta-continuation; a (structural) denotational semantics for a compositional subset of the model; the distinction between making continuations jumpy and pushy; the discovery of the tail-reflection property; and a Scheme implementation of a properly tail-reflective and single-threaded reflective tower. Section 1 presents the new approach taken here: rather than implementing reification and reflection leading to a tower, we consider an infinite tower described by the semantics of each level and relate these by reification and reflection. Meta-circularity then gives sufficient conditions for implementing it. Section 2 investigates some aspects of the environments and control in a reflective tower. An analog of the funarg problem is pointed out, in relation with the correct environment at reification time. Jumpy and pushy continuations are contrasted, and the notions of ephemeral level and proper tail-reflection are introduced. Our approach is compared with related work and after a conclusion, some issues are proposed.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130495309","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}
引用次数: 69
A unified system of parameterization for programming languages 程序设计语言参数化的统一系统
Pub Date : 1988-01-01 DOI: 10.1145/62678.62724
J. Lamping
Current programming languages tend to have several different mechanisms that provide parameterization. For example, most languages have both variables, which communicate parameter values primarily within routines, and procedure invocations, which communicate parameter values primarily between routines. Depending on the situation, one mechanism or the other must be used. The mechanisms also tend to involve more than just parameterization; a procedure call, for example, also implies a transfer of control. The principle of orthogonal design for programming languages suggests that it would be desirable to have a single parameterization mechanism that can be used in all situations and that doesn't affect anything but parameterization. We consider what properties such a mechanism would have to have, concluding, for example, that parameters must be nameable, and, more importantly, that all the parameterization facilities that are available in language expressions must also be available in data objects. These properties, in turn, put requirements on the underlying semantic structure of a programming language. We develop a formal system of parameterization with those properties. The system has theoretical power equivalent to the lambda calculus, and is about the same size. It can serve as the basis of all parameterization in a functional programming language, being able to express constructions like procedure call, variable binding, mutual recursion, and module linkage. In addition to being able to express the common parameterization constructions, the uniformity and universality of the system offer improved modularity, extensibility, and simplicity. It is especially useful for applications that need to create new code at runtime.
当前的编程语言往往有几种不同的机制来提供参数化。例如,大多数语言都有变量(主要在例程内传递参数值)和过程调用(主要在例程之间传递参数值)。根据具体情况,必须使用其中一种机制。这些机制也往往不仅仅涉及参数化;例如,过程调用也意味着控制权的转移。编程语言的正交设计原则表明,最好有一种单一的参数化机制,它可以在所有情况下使用,而且除了参数化之外不会影响任何东西。我们考虑这种机制必须具有哪些属性,并得出结论,例如,参数必须是可命名的,更重要的是,语言表达式中可用的所有参数化工具也必须在数据对象中可用。这些属性反过来又对编程语言的底层语义结构提出了要求。我们开发了一个具有这些性质的形式化参数化系统。该系统的理论功率相当于λ演算,并且大小大致相同。它可以作为函数式编程语言中所有参数化的基础,能够表达过程调用、变量绑定、相互递归和模块链接等结构。除了能够表达通用的参数化结构之外,系统的一致性和通用性还提供了改进的模块化、可扩展性和简单性。它对于需要在运行时创建新代码的应用程序特别有用。
{"title":"A unified system of parameterization for programming languages","authors":"J. Lamping","doi":"10.1145/62678.62724","DOIUrl":"https://doi.org/10.1145/62678.62724","url":null,"abstract":"Current programming languages tend to have several different mechanisms that provide parameterization. For example, most languages have both variables, which communicate parameter values primarily within routines, and procedure invocations, which communicate parameter values primarily between routines. Depending on the situation, one mechanism or the other must be used. The mechanisms also tend to involve more than just parameterization; a procedure call, for example, also implies a transfer of control. \u0000The principle of orthogonal design for programming languages suggests that it would be desirable to have a single parameterization mechanism that can be used in all situations and that doesn't affect anything but parameterization. \u0000We consider what properties such a mechanism would have to have, concluding, for example, that parameters must be nameable, and, more importantly, that all the parameterization facilities that are available in language expressions must also be available in data objects. These properties, in turn, put requirements on the underlying semantic structure of a programming language. \u0000We develop a formal system of parameterization with those properties. The system has theoretical power equivalent to the lambda calculus, and is about the same size. It can serve as the basis of all parameterization in a functional programming language, being able to express constructions like procedure call, variable binding, mutual recursion, and module linkage. In addition to being able to express the common parameterization constructions, the uniformity and universality of the system offer improved modularity, extensibility, and simplicity. It is especially useful for applications that need to create new code at runtime.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"194 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114975407","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}
引用次数: 29
Partial polymorphic type inference and higher-order unification 部分多态型推理与高阶统一
Pub Date : 1988-01-01 DOI: 10.1145/62678.62697
F. Pfenning
We show that the problem of partial type inference in the nth-order polymorphic &lgr;-calculus is equivalent to nth-order unification. On the one hand, this means that partial type inference in polymorphic &lgr;-calculi of order 2 or higher is undecidable. On the other hand, higher-order unification is often tractable in practice, and our translation entails a very useful algorithm for partial type inference in the &ohgr;-order polymorphic &lgr;-calculus. We present an implementation in &lgr;Prolog in full.
证明了n阶多态微积分中的部分类型推理问题等价于n阶统一问题。一方面,这意味着2阶或更高阶的多态演算中的部分类型推断是不可确定的。另一方面,高阶统一在实践中通常是容易处理的,并且我们的翻译需要一个非常有用的算法来在阶多态演算中进行部分类型推断。我们给出了一个完整的Prolog实现。
{"title":"Partial polymorphic type inference and higher-order unification","authors":"F. Pfenning","doi":"10.1145/62678.62697","DOIUrl":"https://doi.org/10.1145/62678.62697","url":null,"abstract":"We show that the problem of partial type inference in the nth-order polymorphic &lgr;-calculus is equivalent to nth-order unification. On the one hand, this means that partial type inference in polymorphic &lgr;-calculi of order 2 or higher is undecidable. On the other hand, higher-order unification is often tractable in practice, and our translation entails a very useful algorithm for partial type inference in the &ohgr;-order polymorphic &lgr;-calculus. We present an implementation in &lgr;Prolog in full.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129898844","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}
引用次数: 126
期刊
Proceedings of the 1988 ACM conference on LISP and 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