
18 Sep
2008
18 Sep
'08
6:01 p.m.
On Thu, 18 Sep 2008, Andre Nathan wrote:
On Thu, 2008-09-18 at 21:15 +0200, Henning Thielemann wrote:
Think of the state monad as processing a graph in-place. Which graph is addressed is declared when running the State monad using runState or evalState.
Interesting. Is it good practice then to do something like
type GraphM a b = State (Graph a b)
to hide from the user that I'm using the State monad underneath?
'type' won't hide anything but reduces writing. With 'newtype' you could hide the State monad. You could do this, if you plan to change the representation of a Graph to something based on mutable structures. On the other hand with 'newtype GraphM' the user could not easily work on several states of the graph simultaneously.