Where are higher-rank and existential types used?
Ken Shan
ken@digitas.harvard.edu
Thu Sep 11 06:08:27 EDT 2003
Hello,
Norman Ramsey and I are looking for examples of where higher-rank
polymorphism and existential types are useful. Can anyone think of
uses besides the following?
Higher-rank types are used in:
- Deforestation
Andrew Gill, John Launchbury, and Simon L. Peyton Jones. 1993. A
short cut to deforestation. In _Functional programming languages
and computer architecture: 6th conference_, 223-232. New York: ACM
Press.
- Lazy functional state threads
John Launchbury and Simon L. Peyton Jones. 1994. Lazy functional
state threads. In _PLDI '94: Proceedings of the ACM conference on
programming language design and implementation_, vol. 29(6) of _ACM
SIGPLAN Notices_, 24-35. New York: ACM Press.
- Generic (polytypic) programming
Ralf Hinze. 2000. A new approach to generic functional programming.
In _POPL '00: Conference record of the annual ACM symposium on
principles of programming languages_, 119-132. New York: ACM Press.
Ralf Lämmel and Simon L. Peyton Jones. 2003. Scrap your
boilerplate: A practical design pattern for generic programming. In
_Proceedings of the 2003 ACM SIGPLAN international workshop on types
in languages design and implementation_, 26-37. New York: ACM Press.
- Data type invariants
Chris Okasaki. 1999. From fast exponentiation to square matrices:
An adventure in types. In _ICFP '99: Proceedings of the ACM
international conference on functional programming_, vol. 34(9) of
_ACM SIGPLAN Notices_, 28-35. New York: ACM Press.
Ralf Hinze. 2001. Manufacturing datatypes. _Journal of Functional
Programming_ 11(5): 493-524.
Richard Bird and Ross Paterson. 1999. de Bruijn notation as a nested
datatype. _Journal of Functional Programming_ 9(1): 77-91.
Existential types are used in:
- Object-oriented programming
Benjamin C. Pierce and David N. Turner. 1994. Simple type-theoretic
foundations for object-oriented programming. _Journal of Functional
Programming_ 4(2): 207-247.
Konstantin Läufer. 1996. Type classes with existential types.
_Journal of Functional Programming_ 6(3): 485-517.
- Abstract data types
John C. Mitchell and Gordon D. Plotkin. 1988. Abstract types have
existential type. _ACM Transactions on Programming Languages and
Systems_ 10(3): 470-502.
Any pointers or technique descriptions would be highly appreciated! If
there are many contributions, I will post an updated version of this
list.
Ken
--
Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig
United Nations Day is 24 October. http://www.un.org/events/unday/
The Lost Voice of Radio Beijing http://www.milinfoserv.net/lvrb.html
Write letters! We got half of New Testament that way.
More information about the Haskell
mailing list