Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yeah, after monads were invented Haskell have conquered the world through its reputation as a practical “get things done” language.


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?"

https://james-iry.blogspot.com/2009/05/brief-incomplete-and-...


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.

We shouldn't mistake memes for actual insight.


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.


I'm not sure which tutorials you're thinking of. Not this one I guess

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”?


Learn you a Haskell gets to Hello World at page 128.


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.

https://learnyouahaskell.com/learnyouahaskell.pdf


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.


> and not particularly difficult.

Wait until you want debug output in a deeply nested function that isn't already in the IO monad.


You can use trace for that which is part of the base library:

https://hackage.haskell.org/package/base-4.19.1.0/docs/Debug...


Unrelated, but many thanks for organizing Zurihac year after year.


Debugging output, or just plain debugging, is often difficult regardless of the programming language. I wouldn't say this sets Haskell apart.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: