To follow up on middleware, this is a great picture to demonstrate it. 687474703a2f2f692e737461636b2e696d6775722e636f6d2f68623864422e706e67 <https://camo.githubusercontent.com/9dbd86eb82809faf875ab0078771002b7ef357df/687474703a2f2f692e737461636b2e696d6775722e636f6d2f68623864422e706e67>
On Fri, Oct 2, 2015 at 2:43 PM, Marc O'Morain <m...@circleci.com> wrote: > Could you use Russian Dolls as an analogy? To build a Russian doll (or to > build middleware) you start out with the smallest doll, and put it inside > the second smallest, which in turn goes inside the third smallest. When > opening the doll (calling the function) you start with the largest doll, > and open it to reveal the second largest, etc. > > Imagine the function as a marble, and Russian Dolls as middleware. To put > the marble inside the dolls you wrap it in the smallest doll first. To call > the function (retrieve the marble) you need to open the largest, outermost > doll first. > > > > On Fri, Oct 2, 2015 at 8:10 PM, Jason Felice <jason.m.fel...@gmail.com> > wrote: > >> Why is it so hard to describe to new people? >> >> I mean, the questions I get are (I understand what's happening here, but >> I can't describe it well): >> >> 1. If -> threads things first-to-last, why does the middleware run >> last-to-first? >> 2. Why is comp backwards? >> 3. Wait, so how does each wrapper get a second pass at it? >> 4. Why would you do this to me? >> >> I hope to write a blog or something on this, but I wanted to check in >> here first. Any ideas on how to talk about this? >> >> Thanks, >> -Jason >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.