neil-0.3: src/Paper/Haskell2/All.hs
module Paper.Haskell2.All(haskell2) where
import System.Process.Extra
import System.FilePath
import Paper.Haskell2.Stage1
import Paper.Haskell2.Stage2
import Paper.Haskell2.Stage3
haskell2 :: FilePath -> [FilePath] -> IO ()
haskell2 obj files = mapM_ f files
where
f file = do
putStrLn $ "Checking " ++ takeBaseName file
src <- readFile file
let dest = obj </> takeFileName file
res = stage3 dest $ stage2 $ stage1 file src
mapM_ (uncurry writeFile) res
system_ $ "runghc -i" ++ obj ++ " " ++ fst (head res)