From 032e26cf9ed236889637e02e56aef7c22721cd23 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 17 Oct 2020 09:27:40 +0530 Subject: prefer applicative over monadic style --- bin/Main.hs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'bin/Main.hs') diff --git a/bin/Main.hs b/bin/Main.hs index c66d328..18e1c53 100644 --- a/bin/Main.hs +++ b/bin/Main.hs @@ -20,7 +20,7 @@ readExpr inp = evalExpr :: Env -> String -> IO (LispResult String) evalExpr env inp = runExceptT $ fmap show $ - (liftLispResult $ readExpr inp) >>= eval env + liftLispResult (readExpr inp) >>= eval env repl :: Env -> IO () repl env = do @@ -29,20 +29,17 @@ repl env = do case inp of Nothing -> return () Just ",q" -> return () - Just i -> do - out <- evalExpr env i - either (putStrLn . pp i) putStrLn out - repl env + Just i -> evalExpr env i >>= either (putStrLn . pp i) putStrLn >> repl env main :: IO () main = do args <- getArgs - initEnv <- newEnv + env <- newEnv if null args then do putStrLn ";;; Entering lisk repl ..." - repl initEnv + repl env else do let pp = showError defaults "(lisk-repl)" - evalExpr initEnv (head args) >>= (either (putStrLn . pp) print) + evalExpr env (head args) >>= either (putStrLn . pp) print -- cgit v1.2.3