<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    <br>
    -----BEGIN PGP SIGNED MESSAGE-----<br>
    Hash: SHA1<br>
    <br>
    ...regardless of the utility of a contravariant functor
    type-class, I<br>
    strongly advocate for calling it Contrafunctor and not Cofunctor.
    I<br>
    have seen numerous examples of confusion over this, particularly
    in<br>
    other languages.<br>
    <br>
    On 24/12/10 12:16, Mario Blažević wrote:<br>
    <span style="white-space: pre;">&gt; <br>
      &gt; On Thu, Dec 23, 2010 at 5:25 PM, Stephen Tetley <br>
      &gt; &lt;<a class="moz-txt-link-abbreviated" href="mailto:stephen.tetley@gmail.com">stephen.tetley@gmail.com</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:stephen.tetley@gmail.com">&lt;mailto:stephen.tetley@gmail.com&gt;</a>&gt;<br>
      &gt; wrote:<br>
      &gt; <br>
      &gt; On 23 December 2010 21:43, Mario Blažević
      &lt;<a class="moz-txt-link-abbreviated" href="mailto:mblazevic@stilo.com">mblazevic@stilo.com</a> <br>
      &gt; <a class="moz-txt-link-rfc2396E" href="mailto:mblazevic@stilo.com">&lt;mailto:mblazevic@stilo.com&gt;</a>&gt; wrote:<br>
      &gt;&gt; Why are Cofunctor and Comonad classes not a part of the
      base<br>
      &gt; library? [SNIP]<br>
      &gt;&gt; Later on I found that this question has been raised
      before by<br>
      &gt; Conal Elliott,<br>
      &gt;&gt; nearly four years ago.<br>
      &gt;&gt; <br>
      &gt;&gt; <br>
      &gt;
      <a class="moz-txt-link-freetext" href="http://www.haskell.org/pipermail/libraries/2007-January/006740.html">http://www.haskell.org/pipermail/libraries/2007-January/006740.html</a><br>
      &gt;<br>
      &gt;<br>
      &gt;<br>
      &gt; </span><br>
    - From a somewhat "philistine" persepective, that Conal's question<br>
    <span style="white-space: pre;">&gt; went unanswered says
      something:<br>
      &gt; <br>
      &gt; "Does anyone have useful functionality to go into a
      Cofunctor<br>
      &gt; module (beyond the class declaration)?"<br>
      &gt; <br>
      &gt; Successful post-H98 additions to Base (Applicative, Arrows,
      ...) <br>
      &gt; brought a compelling programming style with them. For
      Comonads, <br>
      &gt; Category-extras does define some extra combinators but
      otherwise <br>
      &gt; they have perhaps seemed uncompelling.<br>
      &gt; <br>
      &gt; <br>
      &gt; <br>
      &gt; There are plenty of potential Cofunctor instances on
      Hackage, as <br>
      &gt; I've pointed out. The other side of the proof of the
      utility of<br>
      &gt; the class would be to find existing libraries that could be
      <br>
      &gt; parameterized by an arbitrary functor: in other words, some<br>
      &gt; examples in Hackage of<br>
      &gt; <br>
      &gt;&gt; class Cofunctor c =&gt; ... instance Cofunctor c =&gt;
      ... f ::<br>
      &gt;&gt; Cofunctor c =&gt; ...<br>
      &gt; <br>
      &gt; This would be rather difficult to prove - such signatures
      cannot<br>
      &gt; be declared today, and deciding if existing declarations
      could be <br>
      &gt; generalized in this way would require a pretty deep
      analysis. The <br>
      &gt; only thing I can say is "build it and they will come".<br>
      &gt; <br>
      &gt; To turn the proof obligation around, what could possibly be
      the <br>
      &gt; downside of adding a puny Cofunctor class to the base
      library?<br>
      &gt; <br>
      &gt; <br>
      &gt; <br>
      &gt; _______________________________________________
      Haskell-Cafe<br>
      &gt; mailing list <a class="moz-txt-link-abbreviated" href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a> <br>
      &gt; <a class="moz-txt-link-freetext" href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a></span><br>
    <br>
    <br>
    - -- <br>
    Tony Morris<br>
    <a class="moz-txt-link-freetext" href="http://tmorris.net/">http://tmorris.net/</a><br>
    <br>
    -----BEGIN PGP SIGNATURE-----<br>
    Version: GnuPG v1.4.10 (GNU/Linux)<br>
    Comment: Using GnuPG with Mozilla - <a class="moz-txt-link-freetext" href="http://enigmail.mozdev.org/">http://enigmail.mozdev.org/</a><br>
    <br>
    iEYEARECAAYFAk0UIJ0ACgkQmnpgrYe6r62kWgCeNwZnYLetOFevK6bpCBE/joKO<br>
    2QQAniaX4IGzAmdjEC8kdDV27upUTsBw<br>
    =NP27<br>
    -----END PGP SIGNATURE-----<br>
    <br>
  </body>
</html>