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 all...
We study the type inference problem for a system with type classes as in the functional programming ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Functional generic programming extends functional programming with the ability to parameterize funct...
Defining functions over large, possibly recursive, data structures usually involves a lot of boilerp...
textabstractWe describe a design pattern for writing programs that traverse data structures built fr...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
This paper presents Modular Reifiable Matching (MRM): a new approach to two level types using a fixp...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
This paper describes a new approach to generic functional programming, which allows us to define fun...
Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Fu...
ML lacks support for recursive modules. For instance, two mutually recursive functions or types must...
Researchers repeatedly observed that the module system of ML and the type class mechanism of Haskell...
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic progr...
Initial algebra semantics is one of the cornerstones of the theory of modern functional programming ...
Structural polymorphism is a generic programming technique known within the functional programming c...
We study the type inference problem for a system with type classes as in the functional programming ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Functional generic programming extends functional programming with the ability to parameterize funct...
Defining functions over large, possibly recursive, data structures usually involves a lot of boilerp...
textabstractWe describe a design pattern for writing programs that traverse data structures built fr...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
This paper presents Modular Reifiable Matching (MRM): a new approach to two level types using a fixp...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
This paper describes a new approach to generic functional programming, which allows us to define fun...
Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Fu...
ML lacks support for recursive modules. For instance, two mutually recursive functions or types must...
Researchers repeatedly observed that the module system of ML and the type class mechanism of Haskell...
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic progr...
Initial algebra semantics is one of the cornerstones of the theory of modern functional programming ...
Structural polymorphism is a generic programming technique known within the functional programming c...
We study the type inference problem for a system with type classes as in the functional programming ...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Functional generic programming extends functional programming with the ability to parameterize funct...