Proposal: Add conspicuously missing Functor instances for tuples

Alois Cochard alois.cochard at gmail.com
Tue Jan 19 20:54:38 UTC 2016


I don't have any use case like that. I'm in favor of this proposal for
consistency sake.

That last part of my comment about usefulness/discouraging usage was about
using Functor instance on tuple in general, no matter the arity.

On 19 January 2016 at 21:32, <amindfv at gmail.com> wrote:

> El 19 ene 2016, a las 10:24, Alois Cochard <alois.cochard at gmail.com>
> escribió:
>
> +1
>
> Agree for consistency, I can also see those instances as being useful in
> some specific context, even if I agree with Andreas that in general they
> should be discouraged (especially for newcomers).
>
>
> Can you give us an example where using e.g. the Functor instance for a
> 5-tuple would be the correct/best design decision?
>
> Tom
>
>
>
> On 19 January 2016 at 09:20, Herbert Valerio Riedel <hvriedel at gmail.com>
> wrote:
>
>> On 2016-01-18 at 21:10:07 +0100, David Feuer wrote:
>> > For some reason I really can't imagine, it seems the only tuple type
>> > with a Functor instance is (,) a. I was astonished to find that
>> >
>> > fmap (+1) (1,2,3)
>> >
>> > doesn't work. Since this is *useful*, and there is *only one way to do
>> > it*, I propose we add the following:
>> >
>> > instance Functor ((,,) a b) where
>> >   fmap f (a,b,c) = (a,b,f c)
>> > instance Functor ((,,,) a b c) where
>> >   fmap f (a,b,c,d) = (a,b,c,f d)
>> > etc.
>>
>> As stated elsewhere in this thread already, there is the issue about
>> consistency. Here's a relevant section from the Haskell 2010 report[1]:
>>
>> > 6.1.4 Tuples
>> >
>> > ...
>> >
>> > However, every Haskell implementation must support tuples up to size
>> > 15, together with the instances for Eq, Ord, Bounded, Read, and Show.
>>
>> IMO, we either have no `Functor` instances for tuples at all, or we have
>> them for all tuples up to size 15. The current situations of having them
>> defined only for 2-tuples is inconsistent.
>>
>>
>> Cheers,
>>   hvr
>>
>>  [1]:
>> https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1210006.1.4
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
>
>
>
> --
> *Λ\ois*
> http://twitter.com/aloiscochard
> http://github.com/aloiscochard
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>


-- 
*Λ\ois*
http://twitter.com/aloiscochard
http://github.com/aloiscochard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20160119/d9927c8d/attachment.html>


More information about the Libraries mailing list