Results 1 
7 of
7
A Modular Module System
 Journal of Functional Programming
, 2000
"... A simple implementation of an SMLlike module system is presented as a module parameterized by a base language and its typechecker. This implementation is useful both as a detailed tutorial on the HarperLillibridgeLeroy module system and its implementation, and as a constructive demonstration of ..."
Abstract

Cited by 79 (0 self)
 Add to MetaCart
A simple implementation of an SMLlike module system is presented as a module parameterized by a base language and its typechecker. This implementation is useful both as a detailed tutorial on the HarperLillibridgeLeroy module system and its implementation, and as a constructive demonstration of the applicability of that module system to a wide range of programming languages.
Twolevel types and parameterized modules
 Journal of Functional Programming
, 2003
"... In this paper, we describe two techniques for the efficient, modularized implementation of a large class of algorithms. We illustrate these techniques using several examples, including efficient generic unification algorithms that use reference cells to encode substitutions, and highly modular langu ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
In this paper, we describe two techniques for the efficient, modularized implementation of a large class of algorithms. We illustrate these techniques using several examples, including efficient generic unification algorithms that use reference cells to encode substitutions, and highly modular language implementations. We chose these examples to illustrate the following important techniques that we believe many functional programmers would find useful. First, defining recursive data types by splitting them into two levels: a structure defining level, and a recursive knottying level. Second, the use of rank2 polymorphism inside Haskell’s record types to implement a kind of typeparameterized modules. Finally, we explore techniques that allow us to combine already existing recursive Haskell datatypes with the highly modular style of programming proposed here. 1
Debugging Programs After StructureChanging Transformation
, 1997
"... Translators convert a program from one language to another, and are used to solve a wide range of problems, such as the construction of compilers, optimizers, and preprocessors. Although many tools support the creation of translators, these tools do not provide integrated support for debugging the t ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
Translators convert a program from one language to another, and are used to solve a wide range of problems, such as the construction of compilers, optimizers, and preprocessors. Although many tools support the creation of translators, these tools do not provide integrated support for debugging the translator or the output of the translator. This dissertation investigates the tracking of information necessary to provide debugging capabilities for those translators that are structured as a set of program transformations operating on a treebased representation. In this setting I describe how basic debugging capabilities can be automatically and transparently defined without semantic knowledge of the languages being translated. Furthermore, advanced debugging support, relying on the semantics of the languages and transformations, can be incorporated into this basic framework in a systematic manner. To evaluate this approach I have constructed Khepera, a program transformation system wit...
Type Reconstruction Algorithms: A Survey
, 2007
"... Most type reconstruction algorithms can be broadly classified into two distinct categories: unification and substitution based and constraint based. This report is a survey of some of the popular type reconstruction algorithms in the above two categories to promote better understanding of these algo ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Most type reconstruction algorithms can be broadly classified into two distinct categories: unification and substitution based and constraint based. This report is a survey of some of the popular type reconstruction algorithms in the above two categories to promote better understanding of these algorithms. We have implemented the above algorithms for a language based on pure lambda calculus extended extended with poylorphic let construct on some nontrivial examples. 1
TwoLevel Types and Parameterized Modules (Functional Pearls)
, 2002
"... In this functional pearl, we describe two techniques for the efficient, modularized implementation of a large class of algorithms. We illustrate these techniques using several examples, including efficient generic unification algorithms that use reference cells to encode substitutions, and highly mo ..."
Abstract
 Add to MetaCart
In this functional pearl, we describe two techniques for the efficient, modularized implementation of a large class of algorithms. We illustrate these techniques using several examples, including efficient generic unification algorithms that use reference cells to encode substitutions, and highly modular language implementations.
Interpreting types as abstract values Oleg Kiselyov (FNMOC)
, 2008
"... We expound a view of type checking as evaluation with ‘abstract values’. Whereas dynamic semantics, evaluation, deals with (dynamic) values like 0, 1, etc., static semantics, type checking, deals with approximations like int. A type system is sound if it correctly approximates the dynamic behavior a ..."
Abstract
 Add to MetaCart
We expound a view of type checking as evaluation with ‘abstract values’. Whereas dynamic semantics, evaluation, deals with (dynamic) values like 0, 1, etc., static semantics, type checking, deals with approximations like int. A type system is sound if it correctly approximates the dynamic behavior and predicts its outcome: if the static semantics predicts that a term has the type int, the dynamic evaluation of the term, if it terminates, will yield an integer. As object language, we use simplytyped and letpolymorphic lambda calculi with integers and integer operations as constants. We use Haskell as a metalanguage in which to write evaluators, type checkers, type reconstructors and inferencers for the object language. We explore the deep relation between parametric polymorphism and ‘inlining’. Polymorphic type checking then is an optimization allowing us to type check a polymorphic term at the place of its definition rather than at the places of its use. 1 Introduction: Untyped
A Glance at Polymorphic Types
, 2000
"... We examine cursorily the concept of polymorphism in programming languages. Polymorphism means the ability of a language construct, typically a function, to assume many types. We briefly survey different kinds of polymorphism, but concentrate mainly on predicative parametric polymorphism, which can b ..."
Abstract
 Add to MetaCart
We examine cursorily the concept of polymorphism in programming languages. Polymorphism means the ability of a language construct, typically a function, to assume many types. We briefly survey different kinds of polymorphism, but concentrate mainly on predicative parametric polymorphism, which can be added as a relatively straightforward and consistent extension to simply typed lambda calculus. Issues with type checking polymorphism are also considered, and a sample implementation is provided.