all top-level decls are shared when compiling the language module
combine & sort are compiled; flatten & unflatten are hand-written
compile curry and shuffle