type context type id val create: unit -> context val gen: context -> id