Proposal: Add "writer" Monad instance (,
) o to Control.Monad.Instances
Thomas Schilling
nominolo at googlemail.com
Fri Sep 24 05:44:03 EDT 2010
+1
I'd also prefer the variable to be called 'w' like for the writer
Monad. But that's a bikeshed, so I don't mind either way.
On 23 September 2010 16:58, Jake McArthur <jake.mcarthur at gmail.com> wrote:
> This proposal [1] was originally submitted to Trac by Conal Elliott, but it
> was apparently abandoned and closed after some time. I've picked it back up
> and written out a patch. Here is the text of the proposal:
>
>> I'd like to have a (,)-style writer instance alongside the (->)-based
>> reader instance for Monad in Control.Monad.Instances.
>>
>> Here's the current reader:
>>
>> instance Monad ((->) r) where
>> return = const
>> f >>= k = \ r -> k (f r) r
>>
>> and my proposed writer:
>>
>> instance Monoid o => Monad ((,) o) where
>> return = pure
>> (o,a) >>= f = (o `mappend` o', a') where (o',a') = f a
>>
>> where the return definition relies on the Applicative instance of ((,) o).
>> Written out explicitly,
>>
>> return a = (mempty,a)
>>
>> Control.Monad.Instances will also need two new imports:
>>
>> import Data.Monoid (Monoid(..))
>> import Control.Applicative (pure)
>
> - Jake
>
> [1] http://hackage.haskell.org/trac/ghc/ticket/1951
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
--
Push the envelope. Watch it bend.
More information about the Libraries
mailing list