Results 1 
5 of
5
Primitive Recursion for HigherOrder Abstract Syntax
 Theoretical Computer Science
, 1997
"... ..."
Tagless Staged Interpreters for Typed Languages
 In the International Conference on Functional Programming (ICFP ’02
, 2002
"... Multistage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both readable and efficient. In an untyped setting, staging an interpreter "removes a co ..."
Abstract

Cited by 53 (11 self)
 Add to MetaCart
Multistage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both readable and efficient. In an untyped setting, staging an interpreter "removes a complete layer of interpretive overhead", just like partial evaluation. In a typed setting however, HindleyMilner type systems do not allow us to exploit typing information in the language being interpreted. In practice, this can have a slowdown cost factor of three or more times.
The ∇calculus. Functional programming with higherorder encodings
 In Proceedings of the 7th International Conference on Typed Lambda Calculi and Applications
, 2005
"... Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining gener ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining general recursive functions over higherorder encodings. To avoid problems commonly associated with using the same function space for representations and computations, we separate one from the other. The simplytyped λcalculus plays the role of the representationlevel. The computationlevel contains not only the usual computational primitives but also an embedding of the representationlevel. It distinguishes itself from similar systems by allowing recursion under representationlevel λbinders while permitting a natural style of programming which we believe scales to other logical frameworks. Sample programs include bracket abstraction, parallel reduction, and an evaluator for a simple language with firstclass continuations. 1
Primitive recursion for higher order abstract syntax
 Carnegie Mellon University
, 1996
"... Higherorder abstract syntax is a central representation technique in logical frameworks which maps variables of the object language into variables in the metalanguage. It leads to concise encodings, but is incompatible with functions defined by primitive recursion or proofs by induction. In this p ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Higherorder abstract syntax is a central representation technique in logical frameworks which maps variables of the object language into variables in the metalanguage. It leads to concise encodings, but is incompatible with functions defined by primitive recursion or proofs by induction. In this paper we propose an extension of the simplytyped lambdacalculus with iteration and case constructs which preserves the adequacy of higherorder abstract syntax encodings. The wellknown paradoxes are avoided through the use of a modal operator which obeys the laws of S4. In the resulting calculus many functions over higherorder representations can be expressed elegantly. Our central technical result, namely that our calculus is conservative over the simplytyped lambdacalculus, is proved by a rather complex argument using logical relations. We view our system as an important first step towards allowing the methodology of LF to be employed effectively in systems based on induction principles such as ALF, Coq, or Nuprl, leading to a synthesis of currently incompatible paradigms.
Formalization Of Systems Of Algebras Using Dependent Record Types And Subtyping: An Example.
 In Proceedings of the 7th. Nordic workshop on Programming Theory, Gothenburg
, 1995
"... . We present an example of formalization of systems of algebras using an extension of MartinLof's theory of types with record types and subtyping. This extension is informally explained along the presentation of the example. We also provide code of the formalization as accepted by a type checker im ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
. We present an example of formalization of systems of algebras using an extension of MartinLof's theory of types with record types and subtyping. This extension is informally explained along the presentation of the example. We also provide code of the formalization as accepted by a type checker implemented for the extended theory. Introduction. Our starting point, to which we refer hereafter as type theory, is the formulation of MartinLof's set theory using the theory of types as logical framework [12, 13, 8]. In type theory it is possible to form families of types on a given type, and thus types can be formed by applying such families to individuals. Having families of types allows to introduce dependent function types, that is, types of functions whose output type depends on individuals of the input type. In addition to the functional types there are only ground types: the type Set of (inductively defined) sets and, for each set A, the type of the elements of A. In [14, 4], an ex...