Copyright | Justin Ethier |
---|---|
License | MIT (see LICENSE in the distribution) |
Maintainer | github.com/justinethier |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
This module contains Core functionality, primarily Scheme expression evaluation.
- evalLisp :: Env -> LispVal -> IOThrowsError LispVal
- evalString :: Env -> String -> IO String
- evalAndPrint :: Env -> String -> IO ()
- apply :: LispVal -> LispVal -> [LispVal] -> IOThrowsError LispVal
- continueEval :: Env -> LispVal -> LispVal -> IOThrowsError LispVal
- primitiveBindings :: IO Env
- version :: String
- escapeBackslashes :: String -> String
- showBanner :: IO ()
- substr :: (LispVal, LispVal, LispVal) -> IOThrowsError LispVal
- updateVector :: LispVal -> LispVal -> LispVal -> IOThrowsError LispVal
Scheme code evaluation
evalLisp :: Env -> LispVal -> IOThrowsError LispVal Source
Evaluate lisp code that has already been loaded into haskell
evalString :: Env -> String -> IO String Source
Evaluate a string containing Scheme code.
For example:
env <- primitiveBindings evalString env "(+ x x x)" "3" evalString env "(+ x x x (* 3 9))" "30" evalString env "(* 3 9)" "27"
evalAndPrint :: Env -> String -> IO () Source
Evaluate a string and print results to console
:: Env | Current environment |
-> LispVal | Current continuation |
-> LispVal | Value of previous computation |
-> IOThrowsError LispVal | Final value of computation |
A support function for eval; eval calls into this function instead of returning values directly. continueEval then uses the continuation argument to manage program control flow.
Core data
primitiveBindings :: IO Env Source
Environment containing the primitive forms that are built into the Scheme language. Note that this only includes forms that are implemented in Haskell; derived forms implemented in Scheme (such as let, list, etc) are available in the standard library which must be pulled into the environment using (load).
Utility functions
escapeBackslashes :: String -> String Source
A utility function to escape backslashes in the given string
showBanner :: IO () Source
A utility function to display the husk console banner
substr :: (LispVal, LispVal, LispVal) -> IOThrowsError LispVal Source
A helper function for the special form (string-set!)
updateVector :: LispVal -> LispVal -> LispVal -> IOThrowsError LispVal Source
A helper function for the special form (vector-set!)