I've gone through http://learnyouahaskell.com/ and it wasn't too hard. About the only difficulty is the pointless and contradictory jargon like "point free" or the hand-waving about Monads and how they violate their purely functional execution model. Never heard of Agda, but then I sort of don't care.
Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.
The mark of whether you "know" a programming language isn't whether you've gone through a tutorial; it's whether you can write useful programs in that language.
Uh yeah, there's this thing called experience which allows me to learn a language well enough to realize it's a total load of bullshit. Haskell was exactly like that.
Zed, why do you think Haskell is spoken of so highly if it's so crap? Or are you being hyperbolic? I'm not in a position to judge, but when Peter Thiel gives a 19-year-old $100k to do a Haskell project, that gets my attention.
Really nice effort on this book, I wish I could teleport it back in time to my past self.
> About the only difficulty is the pointless and contradictory jargon like "point free"
It isn't pointless, and it isn't contradictory. If you think it's contradictory, then you don't know what the word "point" means in that context.
It is a useful way to describe the style of functions.
f x = postProcess (businessLogic (foo (preProcess data)))
is a different style than:
f = postProcess . businessLogic . foo . preProcess
It is useful to have words to describe the two styles.
> or the hand-waving about Monads and how they violate their purely functional execution model
What? You obviously weren't listening. Monads do not violate the pure functional execution model. Monads are used, amongst many other things, to functionally compose non-pure program specifications.
> Never heard of Agda, but then I sort of don't care.
Some of us care about the forefront of research about static guarantees. Agda is a language that makes it possible to guarantee arbitrary properties (of our choosing!) about our code. If you are not excited about such guarantees, then you are clearly not a PL guy, but those of us who are interesting in PL research find it fascinating.
> Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.
I sense your frustration and difficulty of picking up Haskell. Maybe if you give it a bit more time, you could understand it.
Zed, I am also trying to learn Haskell and I must admit I have a hard time with it, so I am kind off jealous about you finding it not too hard and having the ability to learn so fast. Even though I used over 5 languages in the last 20 years, for me Haskell is so different and difficult, that I find myself put back to when I was 16 and learned the first language - C on MS-DOS. Still I find Haskell attractive and I hope I will be able to "tame" it. I am facing difficulties with all the terminology which seems strange.
I started with the book "Real World Haskell" (http://book.realworldhaskell.org/) which I find very good, but I got stuck after chapter 5. Then I discovered the Channel 9 lectures "Functional Programming Fundamentals" and I started to watch the videos. It helped me to grasp some of the terms and some of the beauty. But only at the 11th video (http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Gra...) I got kind of hooked. From this point on I started writing my own programs.
From every programming language I looked into so far I still find Haskell to be so different, unique and at the same time beautiful - nothing I had experienced since the first language that I learned.
Hey, I have to call it like I see it. I find Haskell very unusable and their base philosophy just doesn't jibe with what I know of actual software development or logic.
How much did you try to use Haskell before declaring it "unusable"?
Haskell is very different from other languages, which means your expertise in other languages doesn't translate. That makes it harder to start off, almost like learning programming from scratch. But if you encounter this and decide it is "unusable" then you are describing your own lack of expertise in the language as an objective property of the language itself.
Haskell has interesting advantages and disadvantages. It is already used successfully in many contexts. It is a joy to program in, and it's one of the languages where successful compilation actually means a whole lot (bugs that go through the compilation process uncaught are an order of magnitude more rare than in other compiled languages).
It has some useful tools not found elsewhere (hoogle type search, djinn, pl/unpl).
It performs extremely well and manages to be more expressive/concise than Python while still far exceeding it in performance.
Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.