FWIW, I think I used "o" for "output". I'd go with (->) i and (,) o .<br><br><div class="gmail_quote">On Fri, Sep 24, 2010 at 2:44 AM, Thomas Schilling <span dir="ltr"><<a href="mailto:nominolo@googlemail.com">nominolo@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">+1<br>
<br>
I'd also prefer the variable to be called 'w' like for the writer<br>
Monad. But that's a bikeshed, so I don't mind either way.<br>
<div><div></div><div class="h5"><br>
On 23 September 2010 16:58, Jake McArthur <<a href="mailto:jake.mcarthur@gmail.com">jake.mcarthur@gmail.com</a>> wrote:<br>
> This proposal [1] was originally submitted to Trac by Conal Elliott, but it<br>
> was apparently abandoned and closed after some time. I've picked it back up<br>
> and written out a patch. Here is the text of the proposal:<br>
><br>
>> I'd like to have a (,)-style writer instance alongside the (->)-based<br>
>> reader instance for Monad in Control.Monad.Instances.<br>
>><br>
>> Here's the current reader:<br>
>><br>
>> instance Monad ((->) r) where<br>
>> return = const<br>
>> f >>= k = \ r -> k (f r) r<br>
>><br>
>> and my proposed writer:<br>
>><br>
>> instance Monoid o => Monad ((,) o) where<br>
>> return = pure<br>
>> (o,a) >>= f = (o `mappend` o', a') where (o',a') = f a<br>
>><br>
>> where the return definition relies on the Applicative instance of ((,) o).<br>
>> Written out explicitly,<br>
>><br>
>> return a = (mempty,a)<br>
>><br>
>> Control.Monad.Instances will also need two new imports:<br>
>><br>
>> import Data.Monoid (Monoid(..))<br>
>> import Control.Applicative (pure)<br>
><br>
> - Jake<br>
><br>
> [1] <a href="http://hackage.haskell.org/trac/ghc/ticket/1951" target="_blank">http://hackage.haskell.org/trac/ghc/ticket/1951</a><br>
> _______________________________________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
> <a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
><br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
Push the envelope. Watch it bend.<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
</div></div></blockquote></div><br>