Skip to content

Instantly share code, notes, and snippets.

@athas
Created April 21, 2020 13:47
Show Gist options
  • Save athas/0485a1aac6f43423caa5cc1a518a4e0b to your computer and use it in GitHub Desktop.
Save athas/0485a1aac6f43423caa5cc1a518a4e0b to your computer and use it in GitHub Desktop.
module Main (main) where
import Control.Monad.State
import System.Environment (getArgs)
import qualified Futhark.Compiler as Compiler
import qualified Futhark.Internalise.Defunctorise as Defunctorise
import qualified Futhark.Internalise.Defunctionalise as Defunctionalise
import qualified Futhark.Internalise.Monomorphise as Monomorphise
import Futhark.Util.Pretty (pretty)
import Language.Futhark
main :: IO ()
main = do
[file] <- getArgs
(_, prog, src) <- Compiler.readProgramOrDie file
let decs :: [ValBind]
(decs, src') = flip runState src $
Defunctionalise.transformProg =<<
Monomorphise.transformProg =<<
Defunctorise.transformProg prog
putStrLn "defunctionalised:"
mapM_ (putStrLn . pretty) decs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment