<div dir="auto"><div>I myself heard "programmable semicolon" sometime after monads had clicked for me, but I still appreciate it. To answer Tom's question, what these short single sentences do is explain the *purpose* of monads, which is really quite obscure at first. </div><div dir="auto"><br></div><div dir="auto">Listing sequential actions one after the other is so intuitive you see it everywhere. Take baking recipes as one example. Or assembly code. Or poems.<div dir="auto"><br></div><div dir="auto">Procedural programming languages let you use the same intuition for sequencing actions you've been using since you were carving hieroglyphics into obelisks.<div dir="auto"><br></div><div dir="auto">When a Haskeller says, "Monads are great! They let you chain effectful actions together!" it can take a very long time to understand they actually mean exactly what they're saying — the usual intuition is that sequencing actions can't possibly be a real problem, so you go round and round in circles trying to understand what "effectful" means, what "action" means, and how these oh-so-important "laws" have anything to do with it.</div><div dir="auto"><br></div><div dir="auto">A programmable semicolon cuts right to the truth: yes, really, functional programming had to work hard to solve *that* problem.</div><div dir="auto"><br></div><div dir="auto">I can understand why that viewpoint might be long-forgotten by those who were involved in the effort to solve it. :) And I appreciate that it was solved in such a general way that it can be applied to so many seemingly unrelated things! That's the beauty of mathematics!</div></div><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Fri, 17 Sep 2021, 20.11 Tom Ellis, <<a href="mailto:tom-lists-haskell-cafe-2017@jaguarpaw.co.uk">tom-lists-haskell-cafe-2017@jaguarpaw.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, Sep 17, 2021 at 05:02:09PM +0000, Richard Eisenberg wrote:<br>
> > On Sep 17, 2021, at 3:50 AM, Tom Ellis <<a href="mailto:tom-lists-haskell-cafe-2017@jaguarpaw.co.uk" target="_blank" rel="noreferrer">tom-lists-haskell-cafe-2017@jaguarpaw.co.uk</a>> wrote:<br>
> > <br>
> > On Fri, Sep 17, 2021 at 01:43:01PM +0900, Michael Turner wrote:<br>
> >> I finally got (most of?) what monads really mean for practical<br>
> >> programming when none other than Simon Peyton-Jones said F# called a<br>
> >> very similar construct "workflow," a word he likes.<br>
> > <br>
> > Was it literally just a single sentence introducing a new word for a<br>
> > concept that made you "get it"?  Could you elaborate?  This is really<br>
> > quite remarkable.<br>
> <br>
> For me, coming from a mostly Java background (but with a healthy<br>
> dollop of functional programming thrown in the mix -- but no<br>
> Haskell), the phrase that unlocked monads was "programmable<br>
> semicolon".<br>
<br>
I'm curious what "unlock" means here.  Do you mean you could<br>
understand the definition of the monad class after coming across<br>
"programmable semicolon" but not before?  Or do you mean you<br>
understood the *purpose* of monads, but not necessarily how one would<br>
go about implementing them?  Or something else?<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div></div>