
Am 08.04.2017 um 04:03 schrieb Anthony Clayden:
On Tue Apr 4 06:50:55 UTC 2017, Sven Panne wrote:
2017-04-04 8:15 GMT+02:00 Vladislav Zavialov:
Tuples are unbiased cartesian products, full stop.
This statement is not correct.
According to probably all the math books in the world, the statement is correct, at least if we want to see tuples as cartesian products. ..
Sven, I have a lot of sympathy with the digruntlement about Foldable `length` over tuples. But if you're going to start appealing to math, you'd better get your math correct.
Whether or not tuples are unbiased, even wikipedia will tell you they're not commutative.
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.
Do you expect Foldable (a, a) to behave differently vs Foldable (b, a) vs Foldable ((a, a), a) vs ...?
Let's get everybody agreed on that.
It would be nice if we could all agree on removing these instances. 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? It has been stated that "obviously" length (1,2) must be 1 ("what else could it be?"). This suggests that there is a law for length that makes this obvious and its ommision in the docs was just an oversight. Cheers Ben