On Sun, Nov 1, 2009 at 11:20 AM, Conor McBride <[email protected]> wrote: > On 31 Oct 2009, at 10:39, Conor McBride wrote: >> On 30 Oct 2009, at 16:14, Yusaku Hashimoto wrote: >> >>> Hello cafe, >>> Do you know any data-type which is Applicative but not Monad? >> >> [can resist anything but temptation] >> >> 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 > > Put otherwise, unit-delay is applicative but not monadic. I've been > using this to organise exactly what happens when in those wacky > miraculous-looking circular programs. It seems quite promising, > so far...
Can you do that with just applicative functors, or do you need arrows? According to "Idioms are oblivious, arrows are meticulous, monads are promiscuous"[1], an arrow (~>) that's equivalent to an applicative functor has the property that "a ~> b" is isomorphic to "() ~> (a -> b)". A typical delay arrow has the form delay :: a -> (a ~> a), so if (~>) is equivalent to some applicative functor f, we can rewrite that as delay :: a -> f (a -> a), which seems too limited to have the proper behavior. [1] http://homepages.inf.ed.ac.uk/wadler/topics/links.html#arrows-and-idioms -- Dave Menendez <[email protected]> <http://www.eyrie.org/~zednenem/> _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
