The typechecking of programs with implicit type structure.
Proc. of the international symposium on Semantics of data types
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Automatic generation and use of abstract structure operators
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handbook of logic in computer science (vol. 2)
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bananas in space: extending fold and unfold to exponential types
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
ACM Transactions on Programming Languages and Systems (TOPLAS)
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional data structures
Purely functional data structures
Encoding types in ML-like languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Intensional polymorphism in type-erasure semantics
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
From fast exponentiation to square matrices: an adventure in types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Introduction to Functional Programming
Introduction to Functional Programming
Compiling Haskell by Program Transformation: A Report from the Trenches
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Shapely Types and Shape Polymorphism
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Polytypic Programming With Ease (Extended Abstract)
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Polymorphic Type Schemes and Recursive Definitions
Proceedings of the 6th Colloquium on International Symposium on Programming
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Advanced Functional Programming, Second International School-Tutorial Text
MPC '98 Proceedings of the Mathematics of Program Construction
Generalizing generalized tries
Journal of Functional Programming
de Bruijn notation as a nested datatype
Journal of Functional Programming
Journal of Functional Programming
More types for nested data parallel programming
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generic unification via two-level types and parameterized modules
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Polytypic data conversion programs
Science of Computer Programming
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
A Language Prototyping Tool Based on Semantic Building Blocks
Computer Aided Systems Theory - EUROCAST 2001-Revised Papers
An Introduction to Dependent Type Theory
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
A Generic Programming Extension for Clean
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
Dependency-style generic haskell
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
ACM SIGPLAN Notices
Science of Computer Programming - Special issue on mathematics of program construction (MPC 2002)
Two-level types and parameterized modules
Journal of Functional Programming
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of Functional Programming
Scrap your boilerplate with XPath-like combinators
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical type inference for arbitrary-rank types
Journal of Functional Programming
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
iTasks: executable specifications of interactive work flow systems for the web
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Declarative Ajax and client side evaluation of workflows using iTasks
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
An Introduction to iTasks: Defining Interactive Work Flows for the Web
Central European Functional Programming School
Type-based termination of generic programs
Science of Computer Programming
Science of Computer Programming
Efficient and Type-Safe Generic Data Storage
Electronic Notes in Theoretical Computer Science (ENTCS)
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
The next 700 data description languages
Journal of the ACM (JACM)
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
Distinguishing data structures and functions: the constructor calculus and functorial types
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
An iTask case study: a conference management system
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Algorithms for traversal-based generic programming
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Exchanging sources between clean and Haskell: a double-edged front end for the clean compiler
Proceedings of the third ACM Haskell symposium on Haskell
Compiler-support for robust multi-core computing
ISoLA'10 Proceedings of the 4th international conference on Leveraging applications of formal methods, verification, and validation - Volume Part I
Transformation of structure-shy programs with application to XPath queries and strategic functions
Science of Computer Programming
iEditors: extending iTask with interactive plug-ins
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
A simple semantics for polymorphic recursion
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
iData for the world wide web – programming interconnected web forms
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Dynamic construction of generic functions
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
Generic graphical user interfaces
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
GEC: a toolkit for generic rapid prototyping of type safe interactive applications
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Towards generic programming with sized types
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
“Scrap your boilerplate” revolutions
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
A functional approach to generic programming using adaptive traversals
Higher-Order and Symbolic Computation
The HERMIT in the machine: a plugin for the interactive transformation of GHC core language programs
Proceedings of the 2012 Haskell Symposium
Task-oriented programming in a pure functional language
Proceedings of the 14th symposium on Principles and practice of declarative programming
Multi-polymorphic programming in bondi
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Programming errors in traversal programs over structured data
Science of Computer Programming
Hi-index | 0.00 |
This paper describes a new approach to generic functional programming, which allows us to define functions generically for all datatypes expressible in Haskell. A generic function is one that is defined by induction on the structure of types. Typical examples include pretty printers, parsers, and comparison functions. The advanced type system of Haskell presents a real challenge: datatypes may be parameterized not only by types but also by type constructors, type definitions may involve mutual recursion, and recursive calls of type constructors can be arbitrarily nested. We show that—despite this complexity—a generic function is uniquely defined by giving cases for primitive types and type constructors (such as disjoint unions and cartesian products). Given this information a generic function can be specialized to arbitrary Haskell datatypes. The key idea of the approach is to model types by terms of the simply typed &lgr;-calculus augmented by a family of recursion operators. While conceptually simple, our approach places high demands on the type system: it requires polymorphic recursion, rank-n types, and a strong form of type constructor polymorphism. Finally, we point out connections to Haskell's class system and show that our approach generalizes type classes in some respects.