Thanks Dons.

There's also a short and sweet explanation here.

http://hackage.haskell.org/trac/haskell-prime/wiki/NewtypeDeriving

I am going to try and wrap my head around this, as I am very
interested in solutions for haskell / shell interaction.

Are there are any good examples of code written without this
extension, alongside code condensed by using this extension. That
would be helpful for understanding what's going on.

Thomas.



2007/5/1, Donald Bruce Stewart <[EMAIL PROTECTED]>:
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