- program <- read <$> getContents
- let mdl = buildModule "main" $ mapM buildAST program
- Text.hPutStrLn stderr (ppllvm mdl)
- withContext $ \ctx ->
+ AST.Program asts <- read <$> getContents
+ let eitherMdl = buildModuleT "main" $ mapM buildAST asts
+ case eitherMdl of
+ Left err -> die err
+ Right mdl -> withContext $ \ctx ->
withModuleInEngine mcjit mdl' $ \emdl -> do
Just f <- getFunction emdl "expr"
let f' = castFunPtr f :: FunPtr (IO Float)
exprFun f' >>= print
withModuleInEngine mcjit mdl' $ \emdl -> do
Just f <- getFunction emdl "expr"
let f' = castFunPtr f :: FunPtr (IO Float)
exprFun f' >>= print
let bindMap = Map.fromList (zip paramStrs binds)
buildExpr bindMap body >>= ret
where params = zip (repeat float) (map fromString paramStrs)
buildAST (AST.Eval e) =
function "expr" [] float $ \_ -> buildExpr mempty e >>= ret
let bindMap = Map.fromList (zip paramStrs binds)
buildExpr bindMap body >>= ret
where params = zip (repeat float) (map fromString paramStrs)
buildAST (AST.Eval e) =
function "expr" [] float $ \_ -> buildExpr mempty e >>= ret