type Model
= InitIO Env (IO -> Eval MalExpr)
- | InitError String
+ | InitError
| ReplActive Env
| ReplIO Env (IO -> Eval MalExpr)
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case model of
- InitError _ ->
+ InitError ->
-- ignore all
( model, Cmd.none )
( env, EvalErr msg ) ->
-- Init failed, don't start REPL.
- ( InitError msg, writeLine ("ERR:" ++ msg) )
+ ( InitError, writeLine (printError env msg) )
( env, EvalIO cmd cont ) ->
-- IO in init.
( ReplActive env, writeLine (print env expr) )
( env, EvalErr msg ) ->
- ( ReplActive env, writeLine ("ERR:" ++ msg) )
+ ( ReplActive env, writeLine (printError env msg) )
( env, EvalIO cmd cont ) ->
( ReplIO env cont, cmd )
, lazyFn = fn
, eagerFn = fn
, isMacro = False
+ , meta = Nothing
}
go bindsList body =
printString env True
+printError : Env -> MalExpr -> String
+printError env expr =
+ "ERR:" ++ (printString env False expr)
+
+
{-| Read-Eval-Print.
Doesn't actually run the Eval but returns the monad.