KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I need to write a state monad that can also support error handling. I was thinking of using the Either monad for this purpose because it can also provide details about what caused the error. I found a definition for a state monad using the Maybe monad however I am unable to modify it to use Either, instead of Maybe. Here's the code: newtype StateMonad a = StateMonad (State -> Maybe (a, State)) instance Monad StateMonad where (StateMonad p) >>= k = StateMonad (\s0 -> case p s0 of Just (val, s1) -> let (StateMonad q) = k val in q s1 Nothing -> Nothing) return a = StateMonad (\s -> Just (a,s)) data State = State { log :: String , a :: Int}
Tags (comma-separated)
Save Edits
Cancel