That, right, just to clarify, my instances are like that:

instance Applicative (Todo a) where
   pure                = Done
   Todo as <*> Todo bs = Todo $ as ++ bs
   Todo as <*> _       = Todo as
   Done f  <*> r       = fmap f r

instance Monad (Todo a) where
   return        = Done
   Todo as >>= _ = Todo as
   Done a >>= f  = f a 


It's basically accumulating on the Todos. Either [a] b does not fit because it does not accumulate on the a's.


On Tue, Aug 16, 2016 at 11:12 PM, David Kraeutmann <kane@kane.cx> wrote:
I went from the assumption that he just wants something like

instance Monad (Todo a)

and that implies that b is the type inside of the monad.


On 08/16/2016 08:23 PM, David Kraeutmann wrote:
> This looks functionally identical to type Todo a b = Either [a] b, and Either has a Monad instance.
> On 8/16/2016 8:21 PM, Corentin Dupont wrote:
>> Hi guys,
>> is there some library with a Monad (+Applicative, Functor...) instance of
>> the following type:
>>
>> data Todo a b = Todo [a] | Done b
>>
>> Thanks!
>> Corentin
>>
>>
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.