done: - 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 - generic types and type inferencing todo: - to support sets of slots, need comparison of slots => comparison of values => problem: how to compare transformed values? their inputs can come from different types (a) tedious: put in every value: - the type - a comparison function for that type then first compare types, if types match, compare values. could generalize this by writing a compare function on 'typed' values. (b) dirty: use 'magic' function that compares any JS value - typeclass mechanism - what about type links: they connect anything to its type... what is the type of 'anything'?