Reinstate kind projection concept
andrew-johnson-4 opened this issue · comments
What do kinds do for us, really?
Currently we have an open mission to support typing with SI Units. This concept turned out to be a poor basis for a prelude, but it might be good as a mixin. This problem also gives rise to the question of what do Kinds really do for us in LSTS? What is their purpose?
let mph: Mile / Hour;
let mps: Metre / Second = mph as Meter / Second;
This is a good first issue for people interested in Type Theory. Basically, Kinds in LSTS are cleanroom environments for Typechecking. A Type Expression can have multiple Kinds. Term is the default Kind and every term must have a Term Type. Other Kinds in play right now are SI Units and Errors. Units would provide another level of type-checking in addition to normal Term checks. Errors would trend more towards annotating Terms that have exceptional control-flow beyond the pure functional style.
This ticket will be periodically reopened to progress discussion as the discussion progresses.
PunC