<div dir="ltr"><div>Thank you Richard, I'm quite comfortable with discussing in public whether my response was appropriate.</div><div><br></div><div>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.)</div><div><br></div><div>Learning by 'mentally executing' programs is a workable approach -- but not if your mental model of execution is a Turing machine.</div><div><br></div><div>And I was observing Michael's actual q on the Beginners list. It's clear to me:</div><div><br></div><div>* He's trying to translate Haskell to C/C++.</div><div>* He thinks Lambda calculus is 'advanced'/complicated/beyond a beginner.</div><div>* He hasn't tried Lambda calculus/he didn't say it "wasn't helpful for him".</div><div>* He thinks that already knowing a swag of procedural/OOP languages will help with learning Haskell.</div><div><br></div><div>I'd say all of those are unhelpful blocks to learning.</div><div><br></div><div>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.</div><div><br></div><div>And for sure, my learning approach left me with some misconceptions, that Richard and others have patiently untangled.</div><div><br></div><div>AntC</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 17 Sept 2021 at 02:05, Richard Eisenberg <<a href="mailto:lists@richarde.dev">lists@richarde.dev</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">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.<div><br></div><div>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: <a href="http://dev.stephendiehl.com/hask/" target="_blank">http://dev.stephendiehl.com/hask/</a> 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.)</div><div><br></div><div>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 helpful.</div><div><br></div><div>...</div><div><br></div><div>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. :)</div><div><br></div><div>Richard<br><div><br><blockquote type="cite"><div>On Sep 16, 2021, at 12:53 AM, Anthony Clayden <<a href="mailto:anthony.d.clayden@gmail.com" target="_blank">anthony.d.clayden@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><font face="arial, sans-serif">Hi Michael, oh dear, oh dear, oh dear.</font><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">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 into?<br></font><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">> <span style="font-size:1em;white-space:pre-wrap"> ... Your </span>average<span style="font-size:1em;white-space:pre-wrap"> reader (already a programmer) would be better served by a </span><span style="font-size:1em;white-space:pre-wrap">comparative approach: Here's how to say something in a couple of other </span><span style="font-size:1em;white-space:pre-wrap">programming languages, here's how to say something roughly equivalent </span><span style="font-size:1em;white-space:pre-wrap">in Haskell -- BUT, here's how it's subtly different in Haskell.</span></font><br></div></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap"><br></span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap">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.)</span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap"><br></span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap">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.</span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap"><br></span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap">I really don't know how you could have got any experience with Haskell and say "subtly".</span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap"><br></span></font></div><div><font face="arial, sans-serif"><span style="font-size:1em;white-space:pre-wrap">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.)</span></font></div><div><span style="white-space:pre-wrap">...</span></div></div></div></blockquote></div></div></div></blockquote><div> </div></div></div>