mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
49 lines
1.0 KiB
Plaintext
49 lines
1.0 KiB
Plaintext
Some features of the Transfer language:
|
|
|
|
* Purely functional
|
|
* Dependent types
|
|
* Eager evaluation
|
|
* Generalized algebraic datatypes
|
|
* Metavariables
|
|
* Records with subtyping
|
|
* Overloading by explicit dictionary passing
|
|
* Pattern matching by case expressions
|
|
|
|
Additional features in the front-end language:
|
|
|
|
* Disjunctive patterns
|
|
* do-notation
|
|
* Automatic derivation of some operations on user-defined GADTs:
|
|
- Compositional maps and folds
|
|
- Equality
|
|
- Ordering
|
|
- Showing
|
|
* Pattern equations
|
|
* Operator syntax for common functions, most are overloaded
|
|
|
|
|
|
|
|
Differences between Transfer and Cayenne:
|
|
|
|
* Cayenne has a more advanced module system
|
|
|
|
* Cayenne has mutually recursive record fields
|
|
|
|
* Cayenne erases type arguments before running
|
|
|
|
* Transfer is eager, Cayenne is lazy
|
|
|
|
* Transfer has GADTs (inductive families)
|
|
|
|
* Transfer has metavariables
|
|
|
|
* Transfer has record patterns
|
|
|
|
* Transfer has disjunctive patterns
|
|
|
|
* Transfer has derivation of compositional functions
|
|
|
|
* Transfer has a standard library which uses a hierarchy
|
|
of "type classes"
|
|
|