Affiliation:
1. Department of Computing Sciences, Chalmers University of Technology, S-412 96 Göteborg, Sweden
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
31 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Focusing on Refinement Typing;ACM Transactions on Programming Languages and Systems;2023-12-20
2. A Dependently Typed Language with Dynamic Equality;Proceedings of the 8th ACM SIGPLAN International Workshop on Type-Driven Development;2023-08-30
3. Type Patterns: Pattern Matching on Shape-Carrying Array Types;The 35th Symposium on Implementation and Application of Functional Languages;2023-08-29
4. Extracting enhanced artificial intelligence model metadata from software repositories;Empirical Software Engineering;2022-09-20
5. A dependently typed calculus with polymorphic subtyping;Science of Computer Programming;2021-08