[Haskell-cafe] Haskell's "historical futurism" needs better writing, not better tools
Michael Turner
michael.eugene.turner at gmail.com
Wed Sep 15 07:07:38 UTC 2021
I haven't been able to view Andrew Boardman's video so far, but I
gather from the summary that he feels the solution to the most
pressing problem -- growth through fostering newbies -- is simply . .
. better tools.
I beg to differ, as a newbie who is now struggling with the revival of
some Haskell code only with a feeling of claustrophobia. Where is this
incredible feeling of freedom I was promised? At the top of the
learning curve. And it feels like a Sisyphean slope -- the boulder
stops, when I lay off learning, and then slowly starts to roll down
under the gravitational force of memory decay.
The real problem is that the writing sucks. Not all of it -- and some
contributors to the community are stellar writers, even if, in the
snarkish commentary they write about Haskell and the community, I
don't quite get all the jokes. But speaking as a contributor to the
Haskell.org wiki -- to which I contribute at times out of hope that
clarifying points I understand will also lead to more clarity for
myself -- I have to say it: the writing sucks.
Why does it suck? Well, there are several syndromes. One is to think
that Haskell is so incredibly good and pure and elementally profound
that one must start conceptually from scratch. (I've actually been
curtly informed on the beginners' list -- yes, the beginner' list! --
that my problems of comprehension can be solved simply: "Learn lambda
calculus.")
I've had a book recommended to me whose author had such pretensions to
writing in a way that was easily foundational that he actually claimed
his book could teach you Haskell even if you have no programming
experience at all. Now, in practical marketing terms, that's just
silly: such an approach addresses a minuscule fraction of the book's
potential audience. If you've heard of Haskell as a programming
language, you're probably software-multilingual already. But in
practical pedagogical terms, it's also a little ridiculous. Your
average reader (already a programmer) would be better served by a
comparative approach: Here's how to say something in a couple of other
programming languages, here's how to say something roughly equivalent
in Haskell -- BUT, here's how it's subtly different in Haskell. Here's
how Haskell makes something easier (at least perhaps in being more
concise, if the Haskell is more concise) but also conferring useful
leverage where Haskell might otherwise seem unnecessarily verbose.
The problem of better writing is ultimately social, I believe. I have
a friend who's a tenured professor at Columbia University, who has
used Haskell in courses, who praises Haskell for how it makes students
think a little more clearly about how to structure software. However,
his final verdict is this: Functional programming is a cult.
Now, he's a unabashedly abrasive type. (Just ask him, he'll tell you.)
And that verdict IS a little over the top. But I have to say, my
impression of the community is that there are Founder demi-gods
praised even though they leave something to be desired in how
articulate and clear they are for newbies, even when claiming to be
addressing newbies, while the language itself seems to be somewhat an
object of worship.
How can the writing be better? Well, here's a clue: Simon
Peyton-Jones, somewhere in a talk where he was his usual vibrant self
(but where the audience was clearly stunned and intimidated into
silence even though he'd invited people to interrupt with questions)
said that F# had settled on the term "workflow" instead of "monad",
and he felt this was wise.
Workflow? Workflow!? My still-feeble understanding of monads took a
leap forward, because suddenly I had a motivation for them:
abstraction of the idea of a workflow. Could it be that something as
simple as Maybe was a kind of "degenerate case" of a "workflow
abstraction"? I felt massively encouraged that I might finally figure
out how great monads were. Which is not to say that I have.
Writers: you need to stop speaking your own obscure little dialect of
"programmer English". If you're not aware that you are, become more
self-aware. If you ARE aware of it, become aware of how snobbish or
pointlessly mysterious you sound. And if you do become aware of how
you sound, but don't care, ask yourself: if the goal now is to spread
Haskell and help it flourish, isn't your attitude more of a hindrance
than a help?
Tools? That's not the front I'd pick. Because I hit a glitch in
getting VScode to work under Windows 10 (yes, cue the snobbery), I
backed off to github bash and vim. And you know what? It's fine. Sorry
if my knuckles seem to be dragging on the floor, but I'm from the
Stone Age of Unix v7 command line and Bill Joy's original vi. I'd like
nicer tools. But they aren't likely to help me with Haskell.
What's not fine: half the time, I can't figure out the error messages
from GHC, and a dismaying portion of the time, I can't figure out the
language documentation. And since the concepts are seldom described in
concrete enough and time-honored programming language terms (by
comparison to other programming languages) they often don't really
stick. It's like my Sysiphean boulder has been pre-greased -- if I
stop pushing (hard enough with all the abstraction grease on it), it
starts to slide even before it rolls, whenever I leave off coding in
Haskell for any length of time.
Sorry for not writing better email here -- my sentences get rather
long and tortuous when I rant. But not sorry for ranting. You say the
solution to a tool adoption problem (getting more people to use
Haskell) is yet more tools written in Haskell, for your favorite
language, Haskell? No. The failure here is a failure to communicate.
Regards,
Michael Turner
Executive Director
Project Persephone
1-25-33 Takadanobaba
Shinjuku-ku Tokyo 169-0075
Mobile: +81 (90) 5203-8682
turner at projectpersephone.org
Understand - http://www.projectpersephone.org/
Join - http://www.facebook.com/groups/ProjectPersephone/
Donate - http://www.patreon.com/ProjectPersephone
Volunteer - https://github.com/ProjectPersephone
"Love does not consist in gazing at each other, but in looking outward
together in the same direction." -- Antoine de Saint-Exupéry
More information about the Haskell-Cafe
mailing list