<div class="gmail_quote">On Mon, Apr 27, 2009 at 4:19 PM, Martijn van Steenbergen <span dir="ltr">&lt;<a href="mailto:martijn@van.steenbergen.nl">martijn@van.steenbergen.nl</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br></div>
They are in order of power: every monad is an applicative; every applicative is a functor; every functor is pointed.<br>
<br>
Though I can&#39;t think of any non-functor pointiness at the moment.<br><font color="#888888">
<br>
Martijn.</font><div></div></blockquote><div><br>On the other hand, here&#39;s an un-pure-able and un-point-able functor:<br><br><span style="font-family: courier new,monospace;">instance Functor ((,) m) where</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">  --fmap :: (n -&gt; n&#39;) -&gt; (m, n) -&gt; (m, n&#39;)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    fmap f (m, n) = (m, f n)</span><br style="font-family: courier new,monospace;">
</div></div><br>n -&gt; (m, n) is not a function you can write in general without bottom values (unless you specify that m is a monoid, using mempty). Nor is Pointed in the f () sense, since forall a. (a, ()) isn&#39;t something for which a value can be pulled out of thin non-bottom air. But... getting a bit off-topic &gt;_&gt;<br>
<br>—Gracenotes<br>