ACM Home Page
Please provide us with feedback. Feedback
Putting curry-howard to work
Full text PdfPdf (148 KB)
Source Haskell archive
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell table of contents
Tallinn, Estonia
Pages: 74 - 85  
Year of Publication: 2005
ISBN:1-59593-071-X
Author
Tim Sheard  Portland State University
Sponsors
ACM: Association for Computing Machinery
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 59,   Citation Count: 11
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1088348.1088356
What is a DOI?

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
42
43

CITED BY  11