Elm step A
[jackhill/mal.git] / elm / step4_if_fn_do.elm
index c8e349b..e524426 100644 (file)
@@ -31,7 +31,7 @@ type alias Flags =
 
 type Model
     = InitIO Env (IO -> Eval MalExpr)
-    | InitError String
+    | InitError
     | ReplActive Env
     | ReplIO Env (IO -> Eval MalExpr)
 
@@ -64,7 +64,7 @@ malInit =
 update : Msg -> Model -> ( Model, Cmd Msg )
 update msg model =
     case model of
-        InitError ->
+        InitError ->
             -- ignore all
             ( model, Cmd.none )
 
@@ -117,7 +117,7 @@ runInit env expr =
 
         ( 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.
@@ -131,7 +131,7 @@ run env expr =
             ( 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 )
@@ -434,6 +434,7 @@ evalFn args =
                         , lazyFn = fn
                         , eagerFn = fn
                         , isMacro = False
+                        , meta = Nothing
                         }
 
         go bindsList body =
@@ -469,6 +470,11 @@ print env =
     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.