diff options
-rw-r--r-- | lore/Language/Bs/Eval.hs | 5 | ||||
-rw-r--r-- | lore/Language/Bs/Expr.hs | 3 | ||||
-rw-r--r-- | lore/Language/Bs/Repl.hs | 2 | ||||
-rw-r--r-- | lore/core.scm | 1 |
4 files changed, 6 insertions, 5 deletions
diff --git a/lore/Language/Bs/Eval.hs b/lore/Language/Bs/Eval.hs index 8495b88..a3232bc 100644 --- a/lore/Language/Bs/Eval.hs +++ b/lore/Language/Bs/Eval.hs @@ -95,7 +95,8 @@ getFileContents fname = do if exists then TIO.readFile fname else return "File does not exist." textToEvalForm :: T.Text -> T.Text -> Eval Expr -textToEvalForm std input = either (throw . ParseError . show ) evalBody $ parseWithLib std input +textToEvalForm std input = either (throw . ParseError . show ) evalBody + $ parseWithLib std input evalText :: T.Text -> IO () --REPL evalText textExpr = do @@ -239,7 +240,7 @@ eval (List ((:) x xs)) = do throw $ NotFunction funVar updateEnv :: T.Text -> Expr -> Env -> Env -updateEnv var e@(IFun _) Env{..} = Env env $ Map.insert var e fenv +updateEnv var e@(IFun _) Env{..} = Env env $ Map.insert var e fenv updateEnv var e@(Func _ _) Env{..} = Env env $ Map.insert var e fenv updateEnv var e Env{..} = Env (Map.insert var e env) fenv diff --git a/lore/Language/Bs/Expr.hs b/lore/Language/Bs/Expr.hs index d386d0e..a39c7b6 100644 --- a/lore/Language/Bs/Expr.hs +++ b/lore/Language/Bs/Expr.hs @@ -128,8 +128,9 @@ instance Pretty LispErrorType where textStrict "bad special form:" <$$> textStrict txt - NotFunction _ -> + NotFunction expr -> textStrict "not a function" + <$$> pretty expr UnboundVar txt -> textStrict "unbound variable:" diff --git a/lore/Language/Bs/Repl.hs b/lore/Language/Bs/Repl.hs index 35e473f..64ffaa2 100644 --- a/lore/Language/Bs/Repl.hs +++ b/lore/Language/Bs/Repl.hs @@ -21,7 +21,7 @@ repl = do minput <- getInputLine "bs> " case minput of Nothing -> outputStrLn "bye." - Just input -> liftIO (process input) >> repl + Just input -> (liftIO $ process input) >> repl --Just input -> (liftIO $ processToAST input) >> repl process :: String -> IO () diff --git a/lore/core.scm b/lore/core.scm index 9760318..3d411c4 100644 --- a/lore/core.scm +++ b/lore/core.scm @@ -1,7 +1,6 @@ ;; standard library for bs (define (not x) (if x #f #t)) - (define (null? obj) (if (eqv? obj '()) #t #f)) (define (list objs) objs) (define (identity obj) obj) |