husk-scheme-3.6.3: R5RS Scheme interpreter, compiler, and library.

Portabilityportable
Stabilityexperimental
Maintainergithub.com/justinethier
Safe HaskellNone

Language.Scheme.Core

Contents

Description

This module contains Core functionality, primarily Scheme expression evaluation.

Synopsis

Scheme code evaluation

evalLisp :: Env -> LispVal -> IOThrowsError LispValSource

Evaluate a lisp data structure and return a value for use by husk

evalLisp' :: Env -> LispVal -> IO (ThrowsError LispVal)Source

Evaluate a lisp data structure and return the LispVal or LispError result directly

  result <- evalLisp' env $ List [Atom /, Number 1, Number 0]
  case result of
    Left err -> putStrLn $ Error:  ++ (show err)
    Right val -> putStrLn $ show val

evalString :: Env -> String -> IO StringSource

Evaluate a string containing Scheme code

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

applySource

Arguments

:: LispVal

Current continuation

-> LispVal

Function or continuation to execute

-> [LispVal]

Arguments

-> IOThrowsError LispVal

Final value of computation

Call into a Scheme function

continueEvalSource

Arguments

:: 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 EnvSource

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).

version :: StringSource

husk version number

Utility functions

registerExtensions :: Env -> (FilePath -> IO FilePath) -> IO ()Source

Register optional SRFI extensions

escapeBackslashes :: String -> StringSource

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 LispValSource

A helper function for the special form (string-set!)

updateVector :: LispVal -> LispVal -> LispVal -> IOThrowsError LispValSource

A helper function for the special form (vector-set!)

updateByteVector :: LispVal -> LispVal -> LispVal -> IOThrowsError LispValSource

A helper function for the special form (bytevector-u8-set!)