Portability | portable |
---|---|
Stability | experimental |
Maintainer | github.com/justinethier |
Safe Haskell | Safe-Infered |
This module contains an experimental compiler of Scheme to Haskell
The compiler performs the following transformations: Scheme AST (LispVal) -> Haskell AST (HaskAST) -> Compiled Code (String)
- data CompOpts = CompileOptions {}
- defaultCompileOptions :: String -> CompOpts
- createAstFunc :: CompOpts -> [HaskAST] -> HaskAST
- createAstCont :: CompOpts -> String -> String -> HaskAST
- data HaskAST
- showValAST :: HaskAST -> String
- joinL :: [[a]] -> [a] -> [a]
- astToHaskellStr :: LispVal -> String
- header :: [String]
- compileLisp :: Env -> String -> String -> Maybe String -> IOThrowsError [HaskAST]
- compileBlock :: String -> Maybe String -> Env -> [HaskAST] -> [LispVal] -> IOThrowsError [HaskAST]
- compileScalar :: String -> CompOpts -> IOThrowsError [HaskAST]
- compileLambdaList :: [LispVal] -> IOThrowsError String
- compile :: Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]
- mcompile :: Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]
- mfunc :: Env -> LispVal -> (Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]) -> CompOpts -> IOThrowsError [HaskAST]
- compileExpr :: Env -> LispVal -> String -> Maybe String -> IOThrowsError [HaskAST]
- compileApply :: Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]
Documentation
createAstFunc :: CompOpts -> [HaskAST] -> HaskASTSource
showValAST :: HaskAST -> StringSource
compileLisp :: Env -> String -> String -> Maybe String -> IOThrowsError [HaskAST]Source
compileBlock :: String -> Maybe String -> Env -> [HaskAST] -> [LispVal] -> IOThrowsError [HaskAST]Source
compileScalar :: String -> CompOpts -> IOThrowsError [HaskAST]Source
mfunc :: Env -> LispVal -> (Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]) -> CompOpts -> IOThrowsError [HaskAST]Source
compileExpr :: Env -> LispVal -> String -> Maybe String -> IOThrowsError [HaskAST]Source
compileApply :: Env -> LispVal -> CompOpts -> IOThrowsError [HaskAST]Source
Compiles each argument to a function call, and then uses apply to call the function