compiler :: [FilePath] -> IO ()
compiler files = do
  res <- mapM parseFile files :: IO ([Compiler [SDec UserPrim]])
  let compRes = runCompiler (joinFiles res >>= compileScheme)
  case  compRes of
    Right source -> compileC source
    Left  e      -> errLn (presentError e)
  where joinFiles = fmap concat . sequence

-- | List of primitives wrapped in fully eta-converted
-- functions. These will be properly CPS converted.
compiler :: [FilePath] -> IO ()
compiler files = do
  res <- mapM parseFile files :: IO ([Compiler [SDec UserPrim]])
  let compRes = runCompiler (joinFiles res >>= compileScheme)
  case  compRes of
    Right source -> compileC source
    Left  e      -> errLn (presentError e)
  where joinFiles = fmap concat . sequence

-- | List of primitives wrapped in fully eta-converted
-- functions. These will be properly CPS converted.
compiler files = do
  res <- mapM parseFile files :: IO ([Compiler [SDec UserPrim]])
  let compRes = runCompiler (joinFiles res >>= compileScheme)
  case  compRes of
    Right source -> compileC source
    Left  e      -> errLn (presentError e)
  where joinFiles = fmap concat . sequence

-- | List of primitives wrapped in fully eta-converted
-- functions. These will be properly CPS converted.