tphyahoo:
> I was trying to follow the reasoning in Don's article on using haskell
> for shell scripting
> 
>  http://cgi.cse.unsw.edu.au/~dons/blog/2007/03/10
> 
> In the source listing at the end we is
> 
>      newtype Shell a = Shell { runShell :: ErrorT String IO a }
>        deriving (Functor, Monad, MonadIO)
> 
> and I don't understand it what "deriving" is doing here, nor have I
> been able to find documentation on it.

That's 'cunning newtype deriving, my new favourite ghc language
extension.

    
http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html#newtype-deriving

We also use it in xmonad,

    newtype X a = X (ReaderT XConf (StateT XState IO) a)
        deriving (Functor, Monad, MonadIO, MonadState XState, MonadReader XConf)

:-)

-- Don
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to