## Theory and Implementation of a Functional Programming Language (2000)

### BibTeX

@MISC{Lamstein00theoryand,

author = {Ari Lamstein},

title = {Theory and Implementation of a Functional Programming Language},

year = {2000}

}

### OpenURL

### Abstract

The goal of this research is to design and implement a small functional programming language that incorporates some of the features that arise from the theoretical study of programming language semantics. We begin with the study of the λ-calculus, an idealized mathematical language. We present the language PPL, a strongly typed, call-by-name language which supports recursion and polymorphism. We describe a compiler of PPL into a low-level assembly language. The compilation is based on an abstract machine interpretation and includes a type inference algorithm. 1

### Citations

1163 |
The Lambda Calculus Its Syntax and Semantics
- Barendregt
- 1984
(Show Context)
Citation Context ...lgorithm. 1 Introduction The foundations of functional programming languages lie in the untyped λ-calculus, which was developed by Church in 1932. It was developed with two mathematical goals in mind =-=[1]-=-: 1. To develop a general theory of functions. 2. To use that theory as a foundation for mathematics. While the attempts at (2) were not successful, the λ-calculus developed as a rich theory of comput... |

978 | A theory of type polymorphism in programming
- Milner
- 1978
(Show Context)
Citation Context ...ed according to the polymorphic typing rules. If such a substitution exists, return the most general one. Otherwise, fail. This algorithm for polymorphic type inference was first discovered by Milner =-=[7]-=- and was later refined by Damas and Milner [2]. The algorithm works by recursion on the structure of the term M. In each case, the algorithm corresponds to a “bottom-up” reading of the typing rules in... |

972 |
A machine-oriented logic based on the resolution principle
- Robinson
- 1965
(Show Context)
Citation Context ...ssion have any unifier, then they also have a most general one. Furthermore, the most general unifier can be computed efficiently by a unification algorithm which was originally published by Robinson =-=[9]-=-. 4.2 Polymorphic Type Inference Let S be a type schema. We write σ(S) for the result of applying σ to each free type variable in S. Here we rename bound variables as necessary to avoid name clashes, ... |

378 | Principal type-schemes for functional programs - Damas, Milner - 1982 |

52 |
kdefinability and recursiveness
- Kleene
(Show Context)
Citation Context ...s a rich theory of computation [1]. It is well-known that Turing’s notion of computability is equivalent to λ-definability; that is, the class of computable functions can be encoded in the λ-calculus =-=[4]-=-. As we will see, it is this fact coupled with its simple semantics that leads us to use the λ-calculus as a model for functional programming languages. The principal difference between functional pro... |

26 |
Lambda calculi: a guide for computer scientists
- Hankin
- 1994
(Show Context)
Citation Context ...f modularization which is not possible without higher order functions. 2 The Untyped λ-calculus 2.1 The Language We now introduce the fundamental definitions of the λ-calculus. We refer the reader to =-=[1, 8, 3]-=- for a more comprehensive treatment. 3sLet V be a countably infinite set of variables (written x, y, z, . . . ). The class of λ-terms consists of words constructed from the following alphabet: • varia... |

2 |
Un interpreteur du lambda-calcul. Draft, available from ftp://ftp.logique.jussieu.fr/pub/distrib/krivine/interprt.pdf
- Krivine
- 1996
(Show Context)
Citation Context ...instead use a level of indirection, and keep a list of pointers (addresses) to what the variables map to. We first describe the implementation in terms of an abstract machine, in the style of Krivine =-=[5]-=-. Definition. Let A be a countable set of addresses (written a1, a2, . . . ). A term closure is a pair {M, σ}, where M is a PPL term, σ is a partial function from variables to A, and F V (M) ⊆ dom(σ).... |

1 |
Implementation of the programming language PPL
- Lamstein, Selinger
- 2000
(Show Context)
Citation Context ...us 2 : POP A ADD V, A CMP SS, #1 BGE plus 3 EXITINT V plus 3 : POP r JUMP r 7 A Guide to the Implementation 7.1 Introduction A prototypical implementation of PPL is available on the world-wide web at =-=[6]-=-. It is written in Objective Caml. The main component of the implementation is the executable programppl, which reads a PPL program and outputs compiled pseudo assembly code. For reasons of portabilit... |