4 ms·
That has a little to do with Scala just being a pretty bad place to implement most of these things. E.g., Monad transformers work just great in Haskell but are
by tel 9y ago
That has a little to do with Scala just being a pretty bad place to implement most of these things. E.g., Monad transformers work just great in Haskell but are terrible in Scala due to the sort of terrible ways type parameters and inference work together.
Future also doesn't obey the monad laws for not being RT and that causes a lotttt of complexity.
- throwawayjava 9y agoOK, I'm another data point for "studied category theory; program in an ML dialect; think it's silly". Most all the theorist/logician/algebraist-turned-programmer folks I know all feel more-or-less the same way. Just explain the pattern in english. Might as well call it a FooDeBar. Giving axioms and such is usually a waste of The Man's money and my time. That said, I think it's extremely valuable to see this sort of thing in an academic or side project/enrichment activity setting. The mindset and mental model are fantastically helpful. See dshnkao's post, for example.
- Myrmornis 9y agoJust to be clear, you're advocating: 1. Don't use terminology from academic category theory / abstract algebra in computer programming 2. But if you haven't studied these things, and you are a programmer, it might be very enlightening to do so. Is that right?
- throwawayjava 9y ago> category theory / abstract algebra Woah there! But otherwise, yes. Most working mathematicians have seen category theory and borrow bits and pieces of notation and such. But most of their work is done in far more concrete settings. Working programmers should adopt the same arrangement. It's a subtle position, but not an inconsistent one. I promise :-)
- hota_mazi 9y agoIt's not just monad transformers, monads themselves are pretty awkward to use in any language that's not Haskell. And actually, a lot of FP languages simply don't even have monads at all (OCaml, F#). Monads should never have escaped Haskell.
- s4vi0r 9y agoIsn't a Monad just the fancy name for a type/structure that implements map and flatMap in a lawful manner?
- hota_mazi 9y agoClose: the required operations are `flatMap` and bind/pure/point/lift/return/whatever-you-want-to-call-it. You can derive `map` from these two other functions so it doesn't need to be part of the interface.
- tome 9y ago> Monads should never have escaped Haskell. They should have put them in a monad.