Languages of the future
- 1 December 2004
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 39 (12) , 119-132
- https://doi.org/10.1145/1052883.1052897
Abstract
This paper explores a new point in the design space of formal reasoning systems - part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This simple extension to the type system allows the programmer to describe properties of his program in the types of witness objects which can be thought of as concrete evidence that the program has the property desired. These techniques and two other rich typing mechanisms, rank-N polymorphism and extensible kinds, create a powerful new programming idiom for writing programs whose types enforce semantic properties.A language with these features is both a practical programming language and a logic. This marriage between two previously separate entities increases the probability that users will apply formal methods to their programming designs. This kind of synthesis creates the foundations for the languages of the future.Keywords
This publication has 35 references indexed in Scilit:
- An extension of HM(X) with bounded existential and universal data-typesACM SIGPLAN Notices, 2003
- ML FACM SIGPLAN Notices, 2003
- Closed types for a safe imperative MetaMLJournal of Functional Programming, 2003
- A type system for certified binariesACM SIGPLAN Notices, 2002
- Type-safe castACM SIGPLAN Notices, 2000
- Dynamic typing for distributed programming in polymorphic languagesACM Transactions on Programming Languages and Systems, 1999
- Cayenne—a language with dependent typesACM SIGPLAN Notices, 1998
- Eliminating array bound checking through dependent typesACM SIGPLAN Notices, 1998
- Trust in the λ-calculusJournal of Functional Programming, 1997
- A framework for defining logicsJournal of the ACM, 1993