No problem. While we are on names. We use -- "Matt" for Matthew Might, a Utah researcher who also uses Racket; -- "Matthew" for Matthew Flatt, the CEO of PLT Design, Inc, creator of Racket, and ruler of the kingdom -- "Matthias" for me, which yes, is a form of Matthew (used in Germanic and Hispanic contexts with various spellings).
On Aug 28, 2013, at 1:02 PM, Alexander McLin wrote: > Thank you for the illuminating primer, Matt. I hadn't realized that it was > such a questionable term. > > > > > On Wed, Aug 28, 2013 at 12:54 PM, Matthias Felleisen <matth...@ccs.neu.edu> > wrote: > > On Aug 28, 2013, at 12:33 PM, Grant Rettke wrote: > > > On Wed, Aug 28, 2013 at 11:04 PM, Matthias Felleisen > > <matth...@ccs.neu.edu> wrote: > >> For the record, there is no such thing as 'applicative order.' There is > >> call-by-value and there is a humongous misunderstanding > >> called 'applicative order' > > > > When authors use this term what do they cite as being the > > authoritative source? How did people come up with using the term? > > > A short history of PL and LC and evaluation order: > > * 1960ish: people discover the lc as a model of pl. But the lc by itself is > not a pl, and they know that. For example, you can encode arithmetic in lc > but that's bad. They also understand that lc per se does not nail down an > evaluation function. For pragmatic reasons, it is clearly wrong to define > > eval[[ e ]] = the normal form of e according to beta > > Otherwise you get infinite loops when the programs that you > > * over the he following decade: people make two different compromises: > > [1] they stop evaluating when they find a lambda but otherwise use beta > > [2] they evaluate the argument before they evaluate a function application > Algol 60 introduces the by-value variant as > A(int x) value x; as short for A(int x); x := x; > with the understanding that := is strict on the rhs. > > * in parallel: mathematicians think that this is about a strategy for > evaluation lambda terms and explore a whole range of evaluation strategy. An > ES is a function from a lambda term with at least one beta redex to a > specific beta redex. Applicative order is one of these. > > * 1970ish: People begin to understand that 'applicative' does not address the > termination issue. Confusion reigns. > > * 1973: Plotkin writes the definitive paper on the issue of relating LC to > notions of CBName and CBValue. It appears in TCS: > > Call-by-name, call-by-value, and the lambda calculus. > > It shows how the idea of evaluation order and the idea of a calculus relate > to each other and sets out general criteria. Then it shows that two different > calculi relate to the specified evaluation function according to these > criteria. > > * I later showed in my dissertation that these criteria also apply to > extensions of the model with assignment and control. > > * Crank and I followed up with a paper that shows how Plotkin's criteria > scale to call-by-reference/pass-by-worth, call-by-copy-in/out, etc. So > Plotkin's criteria are neither whimsical nor a fluke. It is possible to work > out this connection for any combination. > > * In a nutshell, however, the idea of evaluation strategy for LC relates to > the idea of evaluation order in PLs only in a highly superficial manner. > > * Sadly SICP continues to propagate this misunderstanding and people keep for > falling for it because the book is intriguing in other ways. > > So if you wish to connect LC and PL and speak about order, please study the > above citations. The whole discussion is summarized in the first part of the > REDEX book (see redex.racket-lang.org). > > -- Matthias > > > > > > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users >
____________________ Racket Users list: http://lists.racket-lang.org/users