Reference. Datatype-Generic Programming
Cite
Cited by (3)
Algorithmics bird-2021-algorithmics
Profunctor Optics: Modular Data Accessors pickering-2017-profunctor
Clowns to the left of me, jokers to the right (pearl): dissecting data structures mcbride-2008-clowns
Cites 133 works (2 here)
With notes (2)
Applicative programming with effects mcbride-2008-applicative
In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.
Generics for the masses hinze-2004-generics
External (131)
- Metamorphisms: Streaming representation-changers (2007)
- Comparing Approaches to Generic Programming in Haskell (2007)
- Generic Programming, Now! (2007)
- Generic Programming in Ωmega (2007)
- A Type-theoretic Reconstruction of the Visitor Pattern (2006)
- Design patterns as higher-order datatype-generic programs (2006)
- FUNCTIONAL PEARL: Enumerating the rationals (2006)
- Concepts: Linguistic support for generic programming in C++ (2006)
- Why dependent types matter (2006)
- Simple unification-based type inference for GADTs (2006)
- Recursion Schemes for Dynamic Programming (2006)
- The essence of the Iterator pattern (2006)
- Naperian functors (personal communication) (2006)
- TypeCase (2005)
- THEORETICAL PEARL Church numerals, twice! (2005)
- Essential language support for generic programming (2005)
- An open and shut typecase (2005)
- Combining Datatypes and Effects (2005)
- Design patterns as higher-order datatype-generic programs (tutorial, ECOOP 2005) (2005)
- Design patterns as higher-order datatype-generic programs (tutorial, OOPSLA 2005) (2005)
- Haskell's Overlooked Object System (2005)
- Proofs from The Book (2004)
- CASL User Manual (2004)
- CASL Reference Manual (2004)
- Build, augment and destroy, universally (2004)
- Domain-Specific Program Generation (2004)
- Exploring Generic Haskell (2004)
- Active Libraries and Universal Languages (2004)
- Specification based testing with QuickCheck (2003)
- Generic Haskell, Specifically (2003)
- Generic Programming (2003)
- On a semantic definition of data independence (2003)
- The Haskell 98 Language and Libraries: The Revised Report (2003)
- Generic Haskell: Practice and Theory (2003)
- Making the Usage of STL Safe (2003)
- Origami programming (2003)
- The Thirty-Year Horizon (Axiom book) (2003)
- Datatype-generic programming project (2003)
- The Fun of Programming (2003)
- Programatica tools for certifiable, auditable development of high-assurance systems in Haskell (2003)
- A lightweight implementation of generics and dynamics (2002)
- Calculating functional programs (2002)
- Polytypic data conversion programs (2002)
- The Boost Graph Library (2002)
- Modern C++ Design (2001)
- When is a function a fold or an unfold? (2001)
- Derivable Type Classes (2001)
- Design and implementation of generics for the .NET Common language runtime (2001)
- Fusion of recursive programs with computational effects (2001)
- Add generic types to the Java programming language (JSR 14) (2001)
- Generative Programming: Methods, Tools and Applications (2000)
- Generic Programming (2000)
- Polytypic values possess polykinded types (2000)
- JUnit: Testing resources for extreme programming (2000)
- Functional Polytypic Programming (2000)
- Fundamental concepts in programming languages (2000)
- Generic Programming: An Introduction (1999)
- Putting Metaclasses to Work (1999)
- Internal iteration externalized (1999)
- Monads, Shapely Functors and Traversals (1999)
- Logical abstractions in Haskell (1999)
- A Semantic Study of Data Independence with Applications to Model Checking (1999)
- Primitive (co)recursion and course-of-value (co)iteration (1999)
- Generic Programming and the STL: Using and Extending the C++ Standard Template Library (1998)
- The under-appreciated unfold (1998)
- The functional imperative: Shape! (1998)
- Functional programming with apomorphisms (corecursion) (1998)
- How to solve the reuse problem? Functional programming (1998)
- The expression problem (1998)
- When do datatypes commute? (1997)
- PolyP—a polytypic programming language extension (1997)
- Aspect-oriented programming (1997)
- Definition of Standard ML (1997)
- The Algebra of Programming (1996)
- Generic functional programming with types and relations (1996)
- Calculate polytypically! (1996)
- Design Patterns: Elements of Reusable Object-Oriented Software (1995)
- Parallelization of divide-and-conquer in the Bird-Meertens formalism (1995)
- A semantics for shape (1995)
- Monads for functional programming (1995)
- Merging monads and folds for functional programming (1995)
- Advanced Functional Programming (LNCS 925) (1995)
- Monadic maps and folds for arbitrary datatypes (1994)
- Prime number computation (1994)
- Formal Program Development (1993)
- A short cut to deforestation (1993)
- Larch: Languages and Tools for Formal Specification. Texts and Monographs in Computer Science (1993)
- A history of CLU (1993)
- Imperative functional programming (1993)
- The Bird-Meertens Formalism as a parallel model (1993)
- Axiom: The Scientific Computing System (1992)
- Paramorphisms (1992)
- Comprehending monads (1992)
- Analytical and Structural Polymorphism Expressed Using Patterns over Types (1992)
- The Art of the Metaobject Protocol (1991)
- Greedoids (1991)
- Functional Programming Languages and Computer Architecture (1991)
- Notions of computation and monads (1991)
- Program calculation properties of continuous algebras (1991)
- POSIX shell and utilities (P1003.2), Draft 11.2 (1991)
- Introduction to Algorithms (1990)
- Fundamentals of Algebraic Specification 2: Module Specifications and Constraints (1990)
- Data structures and program transformation (1990)
- IFIP TC2 Working Conference on Programming Concepts and Methods (1990)
- Deforestation: transforming programs to eliminate trees (1990)
- Tupling and mutumorphisms (1990)
- Why Functional Programming Matters (1989)
- The Ada Generic Library linear list processing packages (1989)
- Theorems for free! In Functional Programming Languages and Computer Architecture (1989)
- International Summer School on Constructive Algorithmics (STOP project) (1989)
- Constructive Methods in Computer Science (1988)
- A Categorical Programming Language (1987)
- Abstraction and Specification in Program Development (1986)
- On understanding types, data abstraction, and polymorphism (1985)
- Fundamentals of Algebraic Specification 1: Equations and Initial Semantics (1985)
- Using circular programs to eliminate multiple traversals of data (1984)
- Reference manual for the Ada programming language (ANSI/MIL-STD-1815A-1983) (1983)
- Types, abstraction and parametric polymorphism (1983)
- Principal type-schemes for functional programs (1982)
- A theory of type polymorphism in programming (1978)
- Revised Report on the Algorithmic Language Algol 68 (1976)
- Regular Algebra Applied to Path-finding Problems (1975)
- Pascal User Manual and Report (1975)
- Programming Symposium (1974)
- Structured Programming, APIC studies in data processing (1972)
- Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieur (1972)
- Matroids and the greedy algorithm (1971)
- A contribution to the development of ALGOL (1966)
- Revised report on the algorithmic language ALGOL 60 (1963)
- A Programming Language (1962)
- Preliminary report (1958)