10.1145/289423.289451acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article
Free Access

Cayenne—a language with dependent types

Authors Info & Claims
Published:29 September 1998Publication History

ABSTRACT

Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value, and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value expressions and type expressions; thus reducing the number of language concepts.Having dependent types and combined type and value expressions makes the language very powerful. It is powerful enough that a special module concept is unnecessary; ordinary records suffice. It is also powerful enough to encode predicate logic at the type level, allowing types to be used as specifications of programs. However, this power comes at a cost: type checking of Cayenne is undecidable. While this may appear to be a steep price to pay, it seems to work well in practice.

References

  1. ACN90.L. Augustsson, T. Coquand, and B. NordstrSm. A short description of Another Logical Framework. In Proceedings of the First Workshop on Logical Frameworks, Antibes, pages 39-42, 1990.Google ScholarGoogle Scholar
  2. AJ89.L. Augustsson and T. Johnsson. The Chalmers Lazy-ML Compiler. The Computer Journal, 32(2):127-141, 1989. Google ScholarGoogle Scholar
  3. Aug93.Lenn~rt Augustsson. Implementing Haskell Overloading. ill Proc. 6th Int'l Conf. on Functional Programming Languages and Computer Architecture (FPCA'93), p~ges 65-73. ACM Press, June 1993. Google ScholarGoogle Scholar
  4. BDD89.H. Boehm, A. Demers, and J. Donahue. A Programmer's Introduction to Russell. Technical report, Cornell University, 1989.Google ScholarGoogle Scholar
  5. Bet98.Gustavo Betarte. Dependent Record Types and Algebraic Structures in Type Theory. PhD thesis, Department of Computing Science, University of GSteborg, GSteborg, Sweden, February 1998.Google ScholarGoogle Scholar
  6. Car88.Luca Gardelli. Phase Distinction in Type Theory. Research report, DEC SRC, 1988.Google ScholarGoogle Scholar
  7. Car94.Luca Cardelli. The Quest Language and System. Research report, DEC SRC, 1994.Google ScholarGoogle Scholar
  8. CH86.Thierry Coquand and G~rard Huet. The Calculus of Constructions. Technical Report 530, INRIA, Centre de Rocquencourt, 1986.Google ScholarGoogle Scholar
  9. CH88.Thierry Coquand and G~rard Huet. The Calculus of Constructions. Information and Computation, 76(2/3):9,5-120, 1988. Google ScholarGoogle Scholar
  10. Con86.R.L. Constable et al. Implementing Mathematics with the NuPRL Proof Development System. Prentice-Hall, Englewood Cliffs, NJ, 1986. Google ScholarGoogle Scholar
  11. Dan98.Olivier Danvy. Formatting Strings in ML. Technical Report RS-98-5, BRICS, Department of Computer SCience, University of Aarhus, Denmark, March 1998.Google ScholarGoogle Scholar
  12. Fra91.Logical Frameworks. Logic programming in the LF logical framework. In G~rard Huet and Gordon Plotkin, editors, L{CS'89, pages 149-181. Cambridge University Press, 1991. Google ScholarGoogle Scholar
  13. HHP93.Robert Harper, Furio Honsell, and Gordon Plotkin. A Framework for Defining Logics. JACM, 40(1):143-184, 1993. Google ScholarGoogle Scholar
  14. How80.W.A. Howard. Tile formulae-as-types notion of construction. In J. P. Seldin and J. R. Hindley, editors, To H.B. Curry: Essays on Uombinatory Logic, Lambda Calculus and Formalism, pages 479-490. Academic Press, London, 1980.Google ScholarGoogle Scholar
  15. Hud92.Paul Hudak et al. Report on the Programming Language Haskell: A Non-Strict, Purely Functional Language, March 1992. Version 1.2. Also in Sigplan Notices, May 1992. Google ScholarGoogle Scholar
  16. Jon94.Mark P. Jones. The implementation of the Gofer filnctional programming system. Technical Report YALEU/DCS/RR-1030, Department of Computer Science, Yale University, New Haven, Connecticut, USA, May 1994, May 94.Google ScholarGoogle Scholar
  17. Lil97.Mark Lillibridge. Translucent Sums: A Foundation for Higher-Order Module Systems. PhD thesis, School of Computer Science, Carnegie Mellon University, May 1997. CM U-CS-97-122.Google ScholarGoogle Scholar
  18. LP92.Z. Luo and R. Pollack. LEGO Proof Development System: User's Manual. Technical report, LFCS Technical Report ECS-LFCS-92- 211, 1992.Google ScholarGoogle Scholar
  19. MN94.Lena Magnusson and Bengt NordstrSm. The ALF proof editor and its proof engine. In Types for Proofs and Programs, LNCS, pages 213-237, Nijmegen, 1994. Springer-Verlag. Google ScholarGoogle Scholar
  20. Mor95.Greg Morrisett. Compiling with Types. PhD thesis, Carnegie Mellon University, 1995.Google ScholarGoogle Scholar
  21. MTH90.R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. MIT Press, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Nor93.Bengt NordstrSm. The ALF proof editor. In Proceedings 1993 Informal Proceedings of the Nijmegen workhop on Types for Proofs and Programs, 1993.Google ScholarGoogle Scholar
  23. NPS90.Bengt Nordstrsm, Kent Petersson, and Jan M. Smith. Programming in Martin-LSf 's Type Theory. An Introduction. Oxford University Press, 1990. Google ScholarGoogle Scholar
  24. Pfe89.Frank Pfenning. Elf: A language for logic definition and verified meta-programming. In LICS'89, pages 313-322. IEEE, June 1989. Google ScholarGoogle Scholar
  25. PJ93.John Peterson and Mark P. Jones. Implementing Type Classes. In Proceedings of A CM SIGPLAN Symposium on Programming Language Design and Implementation, June 1993. Google ScholarGoogle Scholar
  26. Pol94.Robert Pollack. The Theory of Lego A Proof Checker for the Extended Calculus of Constructions. PhD thesis, University of Edinburgh, 1994.Google ScholarGoogle Scholar
  27. TMC+96.David Tarditi, Greg Morrisett, Pery Cheng, Chris Stone, Robert Harper, and Peter Lee. TIL: A Type-directed Optimizing Compiler for ML. Technical Report CMU-CS-96-108, School of Computer Science, Carnegie Mellon University, February 1996.Google ScholarGoogle Scholar

Index Terms

  1. Cayenne—a language with dependent types

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!