[Haskell-cafe] Applicative but not Monad

Conor McBride conor at strictlypositive.org
Sun Nov 1 19:17:48 EST 2009


On 2 Nov 2009, at 00:11, Ross Paterson wrote:

> On Sun, Nov 01, 2009 at 04:20:18PM +0000, Conor McBride wrote:
>> On 31 Oct 2009, at 10:39, Conor McBride wrote:
>>> I have an example, perhaps not a datatype:
>>> tomorrow-you-will-know
>>
>> Elaborating, one day later,
>>
>>  if you know something today, you can arrange to know it tomorrow
>>  if will know a function tomorrow and its argument tomorrow, you
>>    can apply them tomorrow
>>  but if you will know tomorrow that you will know something the
>>    day after, that does not tell you how to know the thing tomorrow
>
> Yes, but if you will know tomorrow that you will know something
> tomorrow, then you will know that thing tomorrow.

That depends on what "tomorrow" means tomorrow.

> The applicative does coincide with a monad, just not the one you first
> thought of (or/max rather than plus).

True, but it's not the notion I need to analyse circular programs.
I'm looking for something with a fixpoint operator

   fix :: (Tomorrow x -> x) -> x

which I can hopefully use to define things like

   repmin :: Tree Int -> (Int, Tomorrow (Tree Int))

so that the fixpoint operator gives me a Tomorrow Int which I
can use to build the second component, but ensures that the
black-hole-tastic Tomorrow (Tomorrow (Tree Int)) I also receive
is too late to be a serious temptation.

All the best

Conor



More information about the Haskell-Cafe mailing list