lambda-calculator-3.1.0.0: src/Language/Lambda/Untyped.hs
module Language.Lambda.Untyped (
evalText,
runEvalText,
execEvalText,
unsafeExecEvalText,
defaultUniques,
module Language.Lambda.Untyped.Expression,
module Language.Lambda.Untyped.Eval,
module Language.Lambda.Untyped.Parser,
module Language.Lambda.Untyped.State
) where
import Control.Monad.Except
import Data.Either
import RIO
import qualified RIO.Text as Text
import Language.Lambda.Shared.Errors
import Language.Lambda.Shared.UniqueSupply (defaultUniques)
import Language.Lambda.Untyped.Eval
import Language.Lambda.Untyped.Expression
import Language.Lambda.Untyped.Parser
import Language.Lambda.Untyped.State
evalText :: Text -> Eval Text (LambdaExpr Text)
evalText = either throwParseError evalExpr . parseExpr
where throwParseError = throwError . ParseError . Text.pack . show
runEvalText
:: Text
-> Globals Text
-> Either LambdaException (LambdaExpr Text, EvalState Text)
runEvalText input globals' = runEval (evalText input) (mkState globals')
execEvalText
:: Text
-> Globals Text
-> Either LambdaException (LambdaExpr Text)
execEvalText input globals' = execEval (evalText input) (mkState globals')
unsafeExecEvalText
:: Text
-> Globals Text
-> LambdaExpr Text
unsafeExecEvalText input globals'
= unsafeExecEval (evalText input) (mkState globals')
mkState :: Globals Text -> EvalState Text
mkState = flip EvalState defaultUniques