Sorry about this comment, but I don't think you achieved what you wanted with this article. It's a bit rambling and unfocused, and you don't really ever talk to your audience in language they will understand without a prior background in functional programming. Case in point: there's plenty of Haskell, but the first Ruby is 3/4 of the way down. It would be more effective if you took one or two concepts in Haskell and explained them in detail, starting with Ruby.
I got several paragraphs in and thought, where exactly is the Ruby?
Further to that, having inline code (without any monospace formatting), and talking about binary trees as an intro to Haskell, well, I would suspect that it alienates the people it tries to introduce.
I'll own up to my ignorance, of course. I've no CS degree, I've encountered no occasion where I'd implement CS classics like linked lists and binary trees. My understanding goes as far as sort of vaguely recognising them. I'm not going to boast, but I don't doubt I'm alone here.
I couldn't finish the article, because the content didn't match the expectations the title set.
It's possible that you don't roll your own custom trees and other data types because your language of choice doesn't make using your own data structures easy.
"I've encountered no occasion where I'd implement CS classics like linked lists and binary trees. My understanding goes as far as sort of vaguely recognising them."
My languages of choice do make creating custom data structures at least as easy as Haskell, and I still rarely do it.
In most cases I've found it's faster in implementation time, testing time, and running time to just use built in data structures when possible. Even in Haskell.
binary trees actually make a fantastic hook to interest people in haskell, because operations like defining, constructing and balancing trees are so much easier than in most languages.