34 ms·
> [1] https://www.youtube.com/watch?v=hIZxTQP1ifo https://www.youtube.com/watch?v=hIZxTQP1ifo Now we just need a Haskell compiler which actually bothers to pro
by airless_bar 11y ago
> [1] https://www.youtube.com/watch?v=hIZxTQP1ifo https://www.youtube.com/watch?v=hIZxTQP1ifo
Now we just need a Haskell compiler which actually bothers to provide the "pretty essential for sanity" for global uniqueness. Currently, I count zero compilers in common use which do.
- lomnakkus 11y agoNot sure what you mean. Could you elaborate?
- airless_bar 11y agoGHC gives you none of the guarantees Kmett keeps boasting about.
- lomnakkus 11y agoHow so? (EDIT: Just to forestall the inevitable: Yes, there are some weird and dangerous extensions you can enable, but mostly it's pretty clear that they're dangerous. It doesn't seem to be a problem in practice.)
- airless_bar 11y ago> How so? Because they never bothered to actually implement the checks to guarantee global uniqueness in GHC? > (EDIT: Just to forestall the inevitable: Yes, there are some weird and dangerous extensions you can enable, but mostly it's pretty clear that they're dangerous. It doesn't seem to be a problem in practice.) No weird and dangerous extensions in use. Vanilla Haskell.
- tome 11y ago> Because they never bothered to actually implement the checks to guarantee global uniqueness in GHC? Sure they did. Orphan instances are detected by the compiler.
- airless_cotton 11y ago(Sorry, forgot password to my old account.) Orphan warnings tell you that you defined an instance in the wrong place. Things you don't receive warnings for: - Defining the same instance twice. - Having code which uses both instances. Those two should be hard compiler errors, because they break data structures at runtime and make code behave incorrectly. Sorry, orphan warnings are multiple magnitudes of escalation levels away from what should happen and are focused on something different (code hygiene vs. THIS-CODE-IS-WRONG-AND-BROKEN-AND-WILL-CORRUPT-SHIT-AT-RUNTIME-I-WILL-FAIL-TO-COMPILE-THIS).
- tome 11y agoNo, forbidding orphan instances is exactly what you need so that both 1) duplicate instances are never defined, and 2) instances written by separate parties never conflict. If you think that should be an error rather than a warning then fine, but in either case code without orphan instances never has breakage due to instance clashes. It's the correct way to solve the problem.
- airless_cotton 11y agoI wonder why you feel the need to comment if you haven't understood the issue.
- dllthomas 11y agoThis is needlessly rude. I believe I've understood the issue, but if I've misunderstood then I feel extra need to comment, that my misunderstanding might be clarified. From my first reading of what you'd written, tome seemed spot on. On careful re-examination (after reading this comment), I think when you said "Things you don't receive warnings for:" you did not mean to say that you can write that code and receive no warnings (a reasonable interpretation), but that the warnings would not read as directed at the points you raise (also a reasonable interpretation) - which (you note) are substantially more important than "this is generally a good idea."
- 11y ago