Functor, Applicative, Monad, Foldable, Traversable instances for (, , ) a b

Francesco Ariis fa-ml at ariis.it
Sat Apr 1 00:08:17 UTC 2017


On Sat, Apr 01, 2017 at 07:59:00AM +1000, Tony Morris wrote:
> A contrary, consistent position would mean there is a belief in all of
> the following:
> 
> * the length of any value of the type ((,) a) is not 1
> * 0 is not an integer

You keep repeating the same message, I wonder if you read the reply that
have been sent to you. From the other thread (in which, after a brief
threat to fork the compiler, you asked for explanations), Artyom
Kazak kindly answered:

> Okay, I have to admit that in this particular instance it's not quite my
> intuition which causes the pain. Or rather, it's a different kind of
> intuition, which I have acquired from Haskell in particular – "I don't have
> to be particularly careful about minor refactorings, because if I change
> the type of one thing, the compiler will tell me what other things I have
> to change if I want to preserve the logic of my code". The behavior of
> 'length' breaks this intuition because "I'll just pass a tuple here instead
> of whatever I used before" stops being a (relatively) safe refactoring.

No mention of it being "categorically invalid".

Moreover, the message you are replying to now (by Svan Penne) is clearly
illustrates the dichotomy between *type safety* and *consistency*.
Surely everyone (despite their ideas and preferred outcome) can see the
two competing interests?


More information about the Libraries mailing list