0. https://wiki.haskell.org/Introduction#Quicksort_in_Haskell
0. https://wiki.haskell.org/Introduction#Quicksort_in_Haskell
Several years ago I tried to learn Haskell, and while I got to the point where I could write Haskell code, I found reading it nearly impossible. Even code I'd written a day or two earlier I found extremely difficult to decipher. While I learned some interesting things from the time I spent trying to learn Haskell, I eventually gave up on ever actually using it.
The expressions may not be simple, because what is happening may just not be that simple, but (purely a feeling) compared how the code achieving the same would come out on other "mainstream" languages, Haskell still tends to come out on top for me.
Make it clash, which is a (strict, real) Haskell subset replacing VHDL and Verilog[1], and the difference is orders of magnitude. In my hobby use, I plain refuse to write anything else than simple glue logic in VHDL or Verilog now.
[1] Usually compiling to them.
Can I get moving quickly with Haskell or will it take a while to get accustomed to it switching from other languages? My fear is that, like when I started picking up rust, it'll be a bit of a slog.
If you've never dealt with a language similar to Haskell, I think the learning curve is very steep. But it was one of the most worthwhile things I did in my programming life.
Or not, because now I'm stuck with a view of how the world could be, which at least in my professional work life is pretty much out of reach. (Might be different for everyone individually.)
I already feel this way about Clojure vs other languages I know, or Ruby (what I get paid to do) vs Python (what I use when I must).
It gets tiring to know elegance and terseness and then have to use wooden clubs.
If Haskell is some steps further up the ladder, but opportunities to use it are very limited, it would make me even more frustrated.
Can other people understand what is happening? Can people with less expertise understand what is happening? Can you yourself understand what is happening 6 months from now?
You have to actually know Haskell first, obviously.
But for all practical matter, they can better write a single isolated case because it has to abide by stricter typing rules, instead of only conventions that supposed to he upheld.
* https://github.com/input-output-hk/cardano-ledger
* https://github.com/input-output-hk/plutus
There's quite a few recent Isabelle repos such as https://github.com/input-output-hk/high-assurance-legacy
I think that's one of the things that tends to take a long time to learn: Haskell imposes a lot of limitations up front on what you can do. The rules (and in particular the barriers between pure and impure code) aren't quite as rigid at they seem. There are ways to work around them without actually breaking any of the soundness rules.
(To be fair, there is one well-known foot gun, which is that if you lazily read from a file and close the file, the consumer of the file's contents will often get truncated results. So don't do that. Maybe it's been fixed by now, or that API's been deprecated? I haven't really kept up on current events in the Haskell world.)
I think the API is still there, but lazy IO is so heavily discouraged that no one is using it. It's not relevant anymore and considered a mistake.
Beautiful language though, wish I could use it at work.
Sure some people go off the rails with some things, but it's possible to write mostly vanilla Haskell and get a lot done.