[Haskell-cafe] Haskell's "historical futurism" needs better writing, not better tools
ben.franksen at online.de
Fri Oct 1 10:34:21 UTC 2021
Lambda calculus is a red herring. I don't think it helps a beginner,
especially not one who is proficient in various imperative languages.
I fully agree with Michael's critique of most popular writings about
Haskell. Much of it is riddled with poorly veiled attempts to *sell*
Haskell to the reader, instead of clearly explaining how it is just
*different*. The choices Haskell makes can be justified, but they also
have drawbacks. It is necessary to have knowledge about how Haskell
before discussing these matters in a useful way.
The right approach to teach beginners is to ask them to suspend
judgement. Tell them to just believe that there are reasons why things
are how they are (even if it happens to be mere historical inertia).
I started teaching myself Haskell at a time when "A gentle introduction
to Haskell" was more or less the only available tutorial. I found it
fascinating, even though, or perhaps because, I didn't understand
anything at first. I kept wondering "but how can I *do* something with
this"? It seemed utterly impractical for any "real world" programming.
And yet, I could not help admiring the elegance of what was described,
so I kept coming back, until it finally clicked and I began to understand.
Am 17.09.21 um 01:32 schrieb Anthony Clayden:
> Thank you Richard, I'm quite comfortable with discussing in public whether
> my response was appropriate.
> Michael might as well observe early that there's a broad range of views as
> to how best to learn Haskell. (And every reason that what works for some
> doesn't work for others.) I was sharing my experience. I was also drawing
> on observations of q's on StackOverflow, for which there's an
> alarming number who think Haskell is just C/C++ spelled funny. (Take the
> very first [Haskell] q right now.)
> Learning by 'mentally executing' programs is a workable approach -- but not
> if your mental model of execution is a Turing machine.
> And I was observing Michael's actual q on the Beginners list. It's clear to
> * He's trying to translate Haskell to C/C++.
> * He thinks Lambda calculus is 'advanced'/complicated/beyond a beginner.
> * He hasn't tried Lambda calculus/he didn't say it "wasn't helpful for him".
> * He thinks that already knowing a swag of procedural/OOP languages will
> help with learning Haskell.
> I'd say all of those are unhelpful blocks to learning.
> Perhaps in my personal 'learning journey' it helped that I was profoundly
> dissatisfied with procedural languages (of which I'd worked in over a
> dozen); and that I fell across Backus' 'Can Programming be liberated ...?',
> then Lambda calculus, before I landed on an actual implementation of those
> ideas in Haskell.
> And for sure, my learning approach left me with some misconceptions, that
> Richard and others have patiently untangled.
> On Fri, 17 Sept 2021 at 02:05, Richard Eisenberg <lists at richarde.dev> wrote:
>> I just want to pipe up and say I'm not comfortable with this response.
>> When I feel this way about writing on a forum, I normally contact the
>> author in private, but I think posting publicly here has its merits. I'm
>> hoping that the long correspondence AntC and I have had -- often with
>> opposing viewpoints but with mutual respect -- with withstand this email.
>> Michael posted here expressing frustration with his experience learning
>> and using Haskell. In my opinion, he has spent too much time reading older
>> papers, written by experts for experts -- which Michael is not. I do not
>> fault Michael for this: these resources are sometimes what appear when
>> searching, and we as a community have done a poor job marshaling our
>> educational resources. (Michael, I just thought of a resource you might
>> find useful: http://dev.stephendiehl.com/hask/ is an oft-linked resource
>> attempting to do that marshaling. I am not vouching for it here, per se,
>> but I know others have found it useful.)
>> However, Michael very specifically said that "just learn lambda-calculus"
>> was not helpful for him, and so I think it's unhelpful for someone to
>> respond with "just learn lambda-calculus". There are a number of other
>> statements in the email below which could be seen as belittling -- also not
>> In the meantime, I implore us to take all expressed experiences as exactly
>> that: the experience of the person writing. And if they say they don't want
>> X, please let's not feed them X. :)
>> On Sep 16, 2021, at 12:53 AM, Anthony Clayden <anthony.d.clayden at gmail.com>
>> Hi Michael, oh dear, oh dear, oh dear.
>> The seeds of your confusion are very evident from your message. How to
>> back you out of whatever deep rabbit-hole you've managed to get your head
>>> ... 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.
>> No. Just no. Haskell is not "subtly different" to (say) Java in the way
>> that C++ or C# are different. (I'll leave others to judge how subtly
>> different they are.)
>> Haskell is dramatically and fundamentally different. You can't just
>> 'translate' an algorithm from OOP to Haskell. Many newbies try, and there's
>> many tales of woe on StackOverflow. Just No.
>> I really don't know how you could have got any experience with Haskell and
>> say "subtly".
>> I suggest you unlearn everything you think you know about Haskell, and
>> strike out in an entirely different direction. The best approach would be
>> to spend a few days playing with lambda calculus. (That's what I did before
>> tackling Haskell.)
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> Only members subscribed via the mailman list are allowed to post.
I would rather have questions that cannot be answered, than answers that
cannot be questioned. -- Richard Feynman
More information about the Haskell-Cafe