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 --- src/Environment.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/Environment.hs') diff --git a/src/Environment.hs b/src/Environment.hs index 7b3f365..4c444b6 100644 --- a/src/Environment.hs +++ b/src/Environment.hs @@ -8,7 +8,8 @@ module Environment ( Env , IOResult ) where -import Control.Monad (liftM, mapM) +import Control.Applicative ((<$>)) +import Control.Monad (mapM) import Control.Monad.Except import Data.IORef import Data.Maybe (isJust) @@ -44,7 +45,7 @@ setVar :: Env -> String -> Expr -> IOResult () setVar env var val = do ptr <- liftIO $ readIORef env maybe (throwError $ UnboundVariable var) - (liftIO . (flip writeIORef val)) + (liftIO . flip writeIORef val) $ lookup var ptr defineVar :: Env -> String -> Expr -> IOResult () @@ -65,5 +66,5 @@ makeBind (var, val) = do manyBindings :: Env -> [(String, Expr)] -> IO Env manyBindings env binds = do ptr <- readIORef env - extendedEnv <- liftM (++ ptr) $ mapM makeBind binds + extendedEnv <- (++ ptr) <$> mapM makeBind binds newIORef extendedEnv -- cgit v1.2.3