Title
Two-level types and parameterized modules
Abstract
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 knot-tying level. Second, the use of rank-2 polymorphism inside Haskell's record types to implement a kind of type-parameterized modules. Finally, we explore techniques that allow us to combine already existing recursive Haskell data-types with the highly modular style of programming proposed here.
Year
DOI
Venue
2004
10.1017/S095679680300488X
J. Funct. Program.
Keywords
Field
DocType
two-level type,functional programmer,large class,modular language implementation,parameterized module,efficient generic unification algorithm,following important technique,use reference cell,recursive haskell data-types,modular style,recursive data type,recursive knot-tying level,generic programming,data type,separation of concern,polymorphism,data structure
ENCODE,Parameterized complexity,Programming language,Computer science,Unification,Theoretical computer science,Implementation,Data type,Haskell,Modular design,Recursion
Journal
Volume
Issue
ISSN
14
5
0956-7968
Citations 
PageRank 
References 
21
1.09
14
Authors
2
Name
Order
Citations
PageRank
Tim Sheard11691460.87
Emir Pasalic219255.42