The power of Pi

This paper exhibits the power of programming with dependent types by dint of embedding three domain-specific languages: Cryptol, a language for cryptographic protocols; a small data description language; and relational algebra. Each example demonstrates particular design patterns inherent to dependently-typed programming. Documenting these techniques paves the way for further research in domain-specific embedded type systems.

[1]  Robert Gruber,et al.  PADS: a domain-specific language for processing ad hoc data , 2005, PLDI '05.

[2]  Matthieu Sozeau,et al.  Subset Coercions in Coq , 2006, TYPES.

[3]  Bengt Nordström,et al.  Programming in Martin-Löf's Type Theory , 1990 .

[4]  Martin Andersson,et al.  Student paper: HaskellDB improved , 2004, Haskell '04.

[5]  Simon L. Peyton Jones,et al.  Composing Contracts: An Adventure in Financial Engineering , 2001, FME.

[6]  Godmar Back,et al.  DataScript - A Specification and Scripting Language for Binary Data , 2002, GPCE.

[7]  Daan Leijen,et al.  Parsec: direct style monadic parser combinators for the real world , 2001 .

[8]  Conor McBride,et al.  Epigram: Practical Programming with Dependent Types , 2004, Advanced Functional Programming.

[9]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[10]  U. Norell,et al.  Towards a practical programming language based on dependent type theory , 2007 .

[11]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[12]  Simon L. Peyton Jones,et al.  Composing contracts: an adventure in financial engineering (functional pearl) , 2000, ICFP '00.

[13]  Henrik Nilsson,et al.  Functional reactive programming, continued , 2002, Haskell '02.

[14]  Philip Wadler,et al.  Views: a way for pattern matching to cohabit with data abstraction , 1987, POPL '87.

[15]  Peter Morris,et al.  Exploring the Regular Tree Types , 2004, TYPES.

[16]  Satish Chandra,et al.  Packet Types: Abstract specifications of network protocol messages , 2000, SIGCOMM.

[17]  Daan Leijen,et al.  Domain specific embedded compilers , 1999, DSL '99.

[18]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[19]  Simon L. Peyton Jones,et al.  Simple unification-based type inference for GADTs , 2006, ICFP '06.

[20]  David Walker,et al.  The next 700 data description languages , 2006, POPL '06.

[21]  Ralf Lämmel,et al.  Strongly typed heterogeneous collections , 2004, Haskell '04.

[22]  Graham Hutton,et al.  Monadic parsing in Haskell , 1998, Journal of Functional Programming.

[23]  Conor McBride,et al.  The view from the left , 2004, Journal of Functional Programming.

[24]  Tim Sheard,et al.  Putting curry-howard to work , 2005, Haskell '05.

[25]  Thorsten Altenkirch,et al.  Dependent Types for Distributed Arrays , 2008, Trends in Functional Programming.

[26]  Peter Thiemann Server-Side Web Programming in WASH , 2004, Advanced Functional Programming.

[27]  Ralf Hinze,et al.  Generic Haskell: practice and theory , 2003 .

[28]  Frank Pfenning,et al.  Refinement types for ML , 1991, PLDI '91.

[29]  S. Doaitse Swierstra,et al.  Deterministic, Error-Correcting Combinator Parsers , 1996, Advanced Functional Programming.