status: - everything is properly typed, up to the meta-circular level - primitives - structures: list, product, sum can compose structures, e.g., create list of list of product of sum of ... list type is specialized for ListOfByte to use Uint8Array - generics currently implemented in two ways: 1) similar to "templates" (as in C++): a generic function or type is a function that takes a Type, and produces a specific variant 2) experimental implementation of polymorphic types and type inferencing values currently treated as white-box, hardcoded generic types (e.g., list, function) in type inferencing algorithm todo: - interfaces via typeclasses? - type inferencing can be reduced to finding a graph isomorphism?