|
ABSTRACT
The Curry-Howard isomorphism states that types are propositions and that programs are proofs. This allows programmers to state and enforce invariants of programs by using types. Unfortunately, the type systems of today's functional languages cannot directly express interesting properties of programs. To alleviate this problem, we propose the addition of three new features to functional programming languages such as Haskell: Generalized Algebraic Datatypes, Extensible Kind Systems, and the generation, propagation, and discharging of Static Propositions. These three new features are backward compatible with existing features, and combine to enable a new programming paradigm for functional programmers. This paradigm makes it possible to state and enforce interesting properties of programs using the type system, and it does this in manner that leaves intact the functional programming style, known and loved by functional programmers everywhere.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
Lennart Augustsson. Equality proofs in cayenne, July 11 2000.
|
| |
3
|
Lennart Augustsson and Kent Petersson. Silly type families. Available from: http://www.cs.pdx.edu/~sheard/papers/silly.pdf, 1994.
|
 |
4
|
|
| |
5
|
|
| |
6
|
James Cheney and Ralf Hinze. First-class phantom types. Technical Report TR2003-1901, Cornell University, 2003. Also available from: http://www.informatik.uni-bonn.de/~ralf/publications/Phantom.pdf.
|
| |
7
|
Catarina Coquand. Agda is a system for incrementally developing proofs and programs. Web page describing AGDA: http://www.cs.chalmers.se/~catarina/agda/ .
|
| |
8
|
|
| |
9
|
|
 |
10
|
|
| |
11
|
|
| |
12
|
|
 |
13
|
|
 |
14
|
|
| |
15
|
Infopipe web sites:. http://www.cs.pdx.edu/~walpole/infopipes.html, and http://woodworm.cs.uml.edu/~rprice/ep/koster/.
|
 |
16
|
|
| |
17
|
Simon Peyton Jones and Mark Shields. Practical type inference for arbitrary-rank types. Technical report, Microsoft Research, December 2003. http://research.microsoft.com/Users/simonpj/.
|
| |
18
|
Simon Peyton Jones, Geoffrey Washburn, and Stephanie Weirich. Wobbly types: type inference for generalised algebraic data types. http://research.microsoft.com/Users/simonpj/, 2004.
|
| |
19
|
A. J. Kfoury and Said Jahama. Type reconstruction in the presence of polymorphic recursion and recursive types. Technical report, March 21 2000.
|
| |
20
|
Zhaohui Luo and Robert Pollack. LEGO proof development system: User's manual. Technical Report ECS-LFCS-92-211, LFCS, Computer Science Dept., University of Edinburgh, The King's Buildings, Edinburgh EH9 3JZ, May 1992. Updated version.
|
| |
21
|
Connor McBride. Epigram: Practical programming with dependent types. In Notes from the 5th International Summer School on Advanced Functional Programming, August 2004. Available at: http://www.dur.ac.uk/CARG/epigram/epigram-afpnotes.pdf .
|
 |
22
|
|
| |
23
|
Bengt Nordstrom. The ALF proof editor, March 20 1996.
|
| |
24
|
|
| |
25
|
Emir Pasalic and Nathan Linger. Meta-programming with typed object-language representations. In Generative Programming and Component Engineering (GPCE'04), pages 136 -- 167, October 2004. LNCS volume 3286.
|
| |
26
|
Lawrence C. Paulson. Isabelle: The next 700 theorem provers. In P. Odifreddi, editor, Logic and Computer Science, pages 361--386. Academic Press, 1990.
|
| |
27
|
|
| |
28
|
|
 |
29
|
|
| |
30
|
Tim Sheard, James Hook, and Nathan Linger. GADTs + extensible kind system = dependent programming. Technical report, Portland State University, 2005. http://www.cs.pdx.edu/~sheard.
|
| |
31
|
Tim Sheard and Nathan Linger. Programming with static invariants in Omega, September 2004. Available from: http://www.cs.pdx.edu/~sheard/ .
|
| |
32
|
Tim Sheard and Emir Pasalic. Meta-programming with built-in type equality. In Logical Frameworks and Meta-Languages workshop, July 2004. Available at: http://cs-www.cs.yale.edu/homes/carsten/lfm04/.
|
| |
33
|
Vincent Simonet and Francois Pottier. Constraint-based type inference for guarded algebraic data types. Available from: http://cristal.inria.fr/~simonet/publis/index.en.html.
|
| |
34
|
Peter J. Stuckey and Martin Sulzmann. Type inference for guarded recursive data types, February 2005. Available from: http://www.comp.nus.edu.sg/~sulzmann/ .
|
| |
35
|
Aaron Stump. Imperative LF meta-programming. In Logical Frameworks and Meta-Languages workshop, July 2004. Available at: http://cs-www.cs.yale.edu/homes/carsten/lfm04/.
|
| |
36
|
Martin Sulzmann and Meng Wang. A systematic translation of guarded recursive data types to existential types, February 2005. Available from: http://www.comp.nus.edu.sg/~sulzmann/ .
|
| |
37
|
The Coq Development Team. The Coq Proof Assistant Reference Manual, Version 7.4. INRIA, 2003. http://pauillac.inria.fr/coq/doc/main.html.
|
 |
38
|
|
| |
39
|
|
| |
40
|
|
 |
41
|
Hongwei Xi , Chiyan Chen , Gang Chen, Guarded recursive datatype constructors, Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.224-235, January 15-17, 2003, New Orleans, Louisiana, USA
|
 |
42
|
|
 |
43
|
|
|