andrew-johnson-4 / LSTS

Large Scale Type Systems (programming language)

Home Page:https://andrew-johnson-4.github.io/lsts-tutorial/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.