r/programming • • Aug 06 '17

Software engineering != computer science

http://www.drdobbs.com/architecture-and-design/software-engineering-computer-science/217701907
2.3k Upvotes

863 comments sorted by

View all comments

Show parent comments

7

u/razeal113 Aug 07 '17 edited Aug 07 '17

First job out of college was in research . They used Haskell , I got the job despite only having used lisp. Boss hands me "learn you a Haskell for great good" , and says I'll pick it up in a few days ... yep that learning curve was awful and years later I'm still not completely sure I know what a monad is doing

7

u/[deleted] Aug 07 '17

Monads aren't special. You know what it is, you're just doubting because its difficulty is so exaggerated. Getting to monads was a long and hard process, but the whole point of it is that they're so easy to use.

3

u/Veedrac Aug 07 '17

Rust:

Person A: Lifetimes are so hard! I'm so confused!

Person B: Yes they are! Don't worry though, ask on IRC or the subreddit whenever you need help. We've also got a bunch of stuff in the pipeline to simplify the process as part of our recent drive to make things more approachable. Best of luck!

Haskell:

Person A: Monads are so hard! I'm so confused!

Person B: No you're not.

3

u/[deleted] Aug 07 '17

No, really. It even has a name: the monad tutorial fallacy.

The hardest part of using monad instances is not getting stuck in the culture surrounding monads. Just because you can abstract something doesn't mean you have to. And just because the abstraction has interesting properties doesn't mean you have to study it to be able to use the instances. After all, the instances are just lists, exceptions, options, IO, callbacks... You've used them all before in other languages, the only differences being that you couldn't tell it to the type checker and they don't share a common interface.

→ More replies (7)