implemented up to HM

TODO
  * type infer/checking Alts with index maps,
  * Mendler-style recursion combinators
  * parser, pretty print, etc