As "A Brief, Incomplete, and Mostly Wrong History of Programming Languages" put it:
1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"
It's a funny joke (I love that post), but it's mostly for people looking from outside in. It says nothing about actually doing IO with Haskell using monads, which is practical and done, and not particularly difficult.
Yeah as long as you understand how to use monads IO is easy.
This is why Haskell tutorials tend to have 100 pages of dense type-theory before getting to “hello world”, while other languages have that on the first page.
Yeah, but that's not because the first 127 pages are "dense type theory". It's because that's the first time it teaches about compiled programs rather than the REPL. Besides, "Hello world" also appears on page 14.
This is simply untrue. You can do IO without understanding what a monad is, simply taking it as "there is this keyword and this syntax I need to use".
No Haskell tutorials that I know of take long to reach "hello world", which is in fact a shorter program in Haskell than in some mainstream programming languages.
The point is that encoding was not a problem just for ivory tower practicians back then. Python is an exemple of definitely-not-an-ivory-tower language that struggled with the same issues.
Also the practical joke is largely independant from haskell. It's pretty much an example of shuhari principles applied.
Also with a very specific meaning that often gets lost. It was specifically about Haskell before there was an IO type. Without I/O operations, any language is "useless".
(Further context: in the discussion Haskell is described as starting out useless and carefully approaching useful. Other languages start with the footguns and then retrofit useful limitations from the other end!)
I thought there was an interview where he said that many years after Haskell had I/O. I believe you though as I haven't been enamored with Haskell for a long time. It's a cool language, but just doesn't click with me. I can see why it does for others though.
My experience is that this may be illustrative of academic programmers. People working in industry are expected to produce something, regardless of the language. This is why I'd recommend academics to spend a bit of time in the industry, regardless of it feeling awkward/inconvenient, of not being given time to go deep in any specific subject.
Sure, bigger companies have "molded" corners like that, too. But plenty of companies are small, where there there isn't much space in getting nothing practical done.
And yet big companies somehow pay higher wages. My hunch is that they can afford to pay higher wages because while big-tech employees may spend 7:30 a day on scrum poker or whatever, those last 30 minutes they are actually chipping away at some real problem that bothers 100s of millions of people. Whereas startups employees spend 10 hours a day reinventing "Wheels for Dogs"
> Monads are woefully un-represented here; I would be grateful if someone could contribute a few (progressive) examples in the spirit of the development above.
50 comments
[ 21.6 ms ] story [ 112 ms ] thread1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"
https://james-iry.blogspot.com/2009/05/brief-incomplete-and-...
We shouldn't mistake memes for actual insight.
Wait until you want debug output in a deeply nested function that isn't already in the IO monad.
https://hackage.haskell.org/package/base-4.19.1.0/docs/Debug...
This is why Haskell tutorials tend to have 100 pages of dense type-theory before getting to “hello world”, while other languages have that on the first page.
https://wiki.haskell.org/Haskell_in_5_steps#Write_your_first...
or this one
https://riptutorial.com/haskell/example/898/hello--world-
Can you link to the one that has 100 pages before getting to “hello world”?
https://learnyouahaskell.com/learnyouahaskell.pdf
No Haskell tutorials that I know of take long to reach "hello world", which is in fact a shorter program in Haskell than in some mainstream programming languages.
Also the practical joke is largely independant from haskell. It's pretty much an example of shuhari principles applied.
(Further context: in the discussion Haskell is described as starting out useless and carefully approaching useful. Other languages start with the footguns and then retrofit useful limitations from the other end!)
Why would one assume the invalid certificate is caused by that particular professor instead of the IT department's staff at the University of Calgary?
Yeah, academics are only interested in producing silly papers to justify expensive trips to exotic conference locations.
Meanwhile, industry produces important and useful stuff like Scrum™ Poker-planning estimates and Jira®-powered burndown charts to track completion of their Confluence© fully-documented user-stories.
> The Authority on Professional LEGO Serious Play.
[1]: https://www.serious.global/
They post docs.
https://drive.google.com/file/d/1lPnQiik5cAx0X2E3GNbw_Oaug87...
I wrote more, but it got too silly.
fac n = (scanl (*) 1 [1..]) !! n
Sure enough, in the commentary:
> Monads are woefully un-represented here; I would be grateful if someone could contribute a few (progressive) examples in the spirit of the development above.
This is a beautiful line of code.
In all seriousness, I'd probably prefer to find the Junior or "Another junior" version if I was browsing a project.