so if `deserialize` can throw we need a more power...
# arrow
p
so if
deserialize
can throw we need a more powerful abstraction. Applicative, that inherits from Functor, still doesn’t understand about errors because it focuses on independent execution. Monad, that inherits from Applicative, still doesn’t define a function that deals with errors, because it focuses on sequential execution. It isn’t until MonadError, that inherits from Monad, that we find an abstraction that contains some form of error handling!