mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
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"