<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Of course, the proper/correct "implementation" for "Functor" with tuples should be <div class=""><br class=""></div><div class=""><div class="">instance Functor (,) where</div><div class="">  fmap (f,g) (a,b) = (f a, g b)</div><div class=""><br class=""></div><div class=""></div></div><div class=""><div><div class="">instance Functor (,,) where  </div><div class="">  fmap (f,g,h) (a,b) = (f a, g b, h c)</div><div class=""><br class=""></div><div class=""></div><div class="">instance Functor (,,,) where</div><div class="">  fmap (f,g,h,k) (a,b) = (f a, g b, h c, k d)</div><div class=""><br class=""></div><div class="">and so on... (where fmap's type sig alters in a "tuple-structured" way with each instance...)</div><div class=""><br class=""></div><div class="">The current instance for (,)a  is my fmap(id, f)</div><div class=""><br class=""></div><div class="">Or should we have 15 classes ?</div><div class=""><br class=""></div><div class="">class Functor...</div><div class="">class BiFunctor...</div><div class="">class TriFunctor....</div><div class="">...</div><div class="">class QuincadecaFunctor /PentadecaFunctor - depending if you prefer Latin/Greek  ;-)</div><div class=""><br class=""></div><div class="">This probably doesn't clear anything up but does explain why heavy tuple use is deprecated</div><div class="">as per an earlier mail in this thread.....</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Regards, Andrew</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""></div><blockquote type="cite" class=""><div class="">On 19 Jan 2016, at 12:30, Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" class="">carter.schonwald@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">Agreed. +1<span class=""></span><br class=""><br class="">On Tuesday, January 19, 2016, Herbert Valerio Riedel <<a href="mailto:hvriedel@gmail.com" class="">hvriedel@gmail.com</a>> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 2016-01-18 at 21:10:07 +0100, David Feuer wrote:<br class="">
> For some reason I really can't imagine, it seems the only tuple type<br class="">
> with a Functor instance is (,) a. I was astonished to find that<br class="">
><br class="">
> fmap (+1) (1,2,3)<br class="">
><br class="">
> doesn't work. Since this is *useful*, and there is *only one way to do<br class="">
> it*, I propose we add the following:<br class="">
><br class="">
> instance Functor ((,,) a b) where<br class="">
>   fmap f (a,b,c) = (a,b,f c)<br class="">
> instance Functor ((,,,) a b c) where<br class="">
>   fmap f (a,b,c,d) = (a,b,c,f d)<br class="">
> etc.<br class="">
<br class="">
As stated elsewhere in this thread already, there is the issue about<br class="">
consistency. Here's a relevant section from the Haskell 2010 report[1]:<br class="">
<br class="">
> 6.1.4 Tuples<br class="">
><br class="">
> ...<br class="">
><br class="">
> However, every Haskell implementation must support tuples up to size<br class="">
> 15, together with the instances for Eq, Ord, Bounded, Read, and Show.<br class="">
<br class="">
IMO, we either have no `Functor` instances for tuples at all, or we have<br class="">
them for all tuples up to size 15. The current situations of having them<br class="">
defined only for 2-tuples is inconsistent.<br class="">
<br class="">
<br class="">
Cheers,<br class="">
  hvr<br class="">
<br class="">
 [1]: <a href="https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1210006.1.4" target="_blank" class="">https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1210006.1.4</a><br class="">
_______________________________________________<br class="">
Libraries mailing list<br class="">
<a href="javascript:;" onclick="_e(event, 'cvml', 'Libraries@haskell.org')" class="">Libraries@haskell.org</a><br class="">
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br class="">
</blockquote>
_______________________________________________<br class="">Libraries mailing list<br class=""><a href="mailto:Libraries@haskell.org" class="">Libraries@haskell.org</a><br class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries<br class=""></div></blockquote></div><br class=""><div class="">
<div class=""><div class="">Andrew Butterfield</div><div class="">School of Computer Science & Statistics</div><div class="">Trinity College</div><div class="">Dublin 2, Ireland</div></div>

</div>
<br class=""></div></body></html>