-- | Compile a program to C modules, each one represented as a pair of a name
-- and the code represented as a string. To compile the resulting C code, use
-- something like
--
-- > cc -std=c99 YOURPROGRAM.c
compileAll :: (Interp instr CGen (Param2 exp pred), HFunctor instr) =>
    Program instr (Param2 exp pred) a -> [(String, String)]
compileAll
    = map (("", pretty 80) <*>) . prettyCGen . liftSharedLocals
    . wrapMain . interpret
compileAll :: (Interp instr CGen (Param2 exp pred), HFunctor instr) =>
    Program instr (Param2 exp pred) a -> [(String, String)]
compileAll
    = map (("", pretty 80) <*>) . prettyCGen . liftSharedLocals
    . wrapMain . interpret
compileAll
    = map (("", pretty 80) <*>) . prettyCGen . liftSharedLocals
    . wrapMain . interpret