3 ms·
> when a value V has a type T that is an instance of a type class C, then V has to respect the laws associated to C And that's exactly what happens in Scala if
by frowaway001 13y ago
> when a value V has a type T that is an instance of a type class C, then V has to respect the laws associated to C
And that's exactly what happens in Scala if you cared to look at actual code.
The only difference is that one can associate different values with different typeclass instances.
If you decide not to associate values with specific typeclass instances and instead write code which accepts arbitrary instances, despite the fact that the values invisibly depend on a specific one ... sorry, that's just plain dumb.
That's like writing an API which accepts numbers and an arbitrary operation on those numbers, but only returns reasonable results for addition; and then complain that your code is fine as long as the "arbitrary operation" is addition.
No compiler on this planet can fix a lack of brain cells.
> Dereferencing a dangling pointer is undefined behavior, and in particular, it may cause a segfault. Just as specified.
If you can't see the difference yourself, I can't help you.
> This kind of argument I expect from dynamic language folks, not from Scala proponents.
Yeah, sorry. Haskell users know how to deal with different programming languages, but the latest influx of HN's "I-read-something-about-Haskell-on-the-internet-a-few-minutes-ago-let's-tell-everyone-how-dumb-they-are-to-show-my-new-intellectual-superiority-as-a-Haskell-expert"-kids has muddied the water a bit and caught me a bit off-guard, because I usually deal with thinking people only.
- catnaroek 13y ago> And that's exactly what happens in Scala if you cared to look at actual code. My example notwithstanding? Heh. > If you decide not to associate values with specific typeclass instances and instead write code which accepts arbitrary instances, despite the fact that the values invisibly depend on a specific one ... sorry, that's just plain dumb. I am not disagreeing that it is dumb. I am complaining that the language allows me to do something that is dumb in first place. This is attitude towards correctness (the language washing its hands of having to deal with it) is what I dislike. > If you can't see the difference yourself, I can't help you. There is no difference. In both cases, an undesirable behavior is possible because of a hole in the language's design. > Yeah, sorry. Haskell users know how to deal with different programming languages Yes, exactly. The way I deal with Scala is to not use it.
- frowaway001 13y ago>> And that's exactly what happens in Scala if you cared to look at actual code. > My example notwithstanding? Heh. Yes. Just go and read some code instead of using your imagination. Compare for instance TreeSet.apply and List#sorted. > I am complaining that the language allows me to do something that is dumb in first place. This is attitude towards correctness (the language washing its hands of having to deal with it) is what I dislike. Then you should dislike Haskel, too, because that's exactly what Haskell allows you to do, too. Prelude> let getLargestElement (x:xs) = x Prelude> getLargestElement [3,2,1] 3 Prelude> getLargestElement [1,2,3] 1 -- OMG!!! Haskell is sooo incoherent! I wrote a function that obviously relies on that the input is sorted in a certain way, but Haskell let's me pass arbitrary lists to it! How dumb is that?! Haskell has a really terrible attitude towards correctness! >> Yeah, sorry. Haskell users know how to deal with different programming languages > Yes, exactly. Sorry, but you've been sorted into the I-read-something-about-Haskell-on-the-internet-a-few-minutes-ago-let's-tell-everyone-how-dumb-they-are-to-show-my-new-intellectual-superiority-as-a-Haskell-expert category already, so this doesn't really apply to you. > The way I deal with Scala is to not use it. That's perfectly fine, but please stop commenting on things you don't understand. You are only embarrassing yourself.