[Haskell-cafe] Library design question

Henning Thielemann lemming at henning-thielemann.de
Thu Sep 18 18:01:14 EDT 2008


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.


More information about the Haskell-Cafe mailing list