Constraints on definition of `length` should be strengthened

Anthony Clayden anthony_clayden at clear.net.nz
Mon Apr 10 23:26:23 UTC 2017


[Errk, somehow posted this with no Subject. Trying again.]

> On Sun Apr 9 19:24:12 UTC 2017, Sven Panne wrote:

>> 2017-04-09 2:01 GMT+02:00 Ben Franksen :

>>> Am 08.04.2017 um 04:03 schrieb Anthony Clayden:
>>> [...] So to take your examples from an earlier thread,
>>> what do you expect Haskell to do here?:
>>>
>>>    maximum (True,2)   =>   ?
>>>    minimum ((3, 4),5)   => ?   -- i.e. :: ((Int, Int),
Int)
>>>    sum (7,3.14)   =>   ?     -- i.e. :: (Int, Double)
>>>    product (Left $ error "Errk")   =>   ?   -- i.e. ::
>>>                                            Either e Int
>>
>> I (and others) think these should be type errors.
>>

> Exactly.

OK. Do y'all think there should be a `toList` method for
them?

Indeed, should there be a `toList` method available
for any data type that doesn't implement `fromList`?

Perhaps `toList` should not be a method of Foldable?

>
>>> Do you expect Foldable (a, a) to behave differently
>>> vs Foldable (b, a) vs Foldable ((a, a), a) vs ...?
>>>

>> It would be nice if we could all agree on removing these
>> instances.
>>

> Yep. :-)

>> BTW, I find it remarkable that of those who defend these
>> instances, few seem to be especially interested
>> in clarifying the OP's question: what
>> laws exactly do we expect for Foldable? [...]
>>

One of the Laws appears to be that `length` etc
behave as `length . toList`.


AntC


More information about the Libraries mailing list