Idris: A language for type-driven development
>"In Idris, types are first-class constructs in the langauge.This means types can be passed as arguments to functions, and returned from functions just like any other value, such as numbers, strings, or lists.This is a small but powerful idea, enabling:o Relationships to be expressed between values; for example, that two lists have the same length.o Assumptions to be made explicit and checked by the compiler. For example, if you assume that a list is non-empty, Idris can ensure this assumption always holds before the program is run.o If desired, properties of program behaviour to be formally stated and proven."PDS: I'd be curious to know about any/all languages where types can be passed to functions, returned from functions -- and even generated at runtime by functions... that is, where the language regards types as first-class constructs...