factored match/let compilation; class Compileable
Compileable a => Compileable [a] instead of repeated foldM