What's the difference between reduction strategies and evaluation strategies? From the evaluation strategy article on Wikipedia:


  The notion of reduction strategy in lambda calculus is similar but distinct.


From the reduction strategy article on Wikipedia:


  It is similar to but subtly different from the notion of evaluation strategy in computer science.


What is the subtle distinction between evaluation strategies and reduction strategies that these two articles hint at? Are they just two similar concepts from different domains?
A reduction strategy is a function on Lambda that picks one redex (reducible expression) from all possible redexes -- depending on what you define as a redex. 

Informally, an evaluation strategy is the order in which a language evaluates its arguments. A parameter-passing strategy is what the language hands to the function. 

To understand the connection among these, study Plotkin's paper on Call-by-name, call-by-value, and the lambda calculus. He clearly spells out that you want to choose distinct AXIOMS depending on which order of evaluation you want. For Cb-name you want the old beta axiom and for cb-value you want a beta-value axiom. If you do that, all meta-theorems work out the same for both flavors. I showed later on (with many collaborators) that this idea generalizes to everything the world of PL has studied. 

It's all technical, not some poem that can be interpreted. Just read up on it. 

-- Matthias Felleisen

p.s. I will say that I think people will have an easier time understanding Plotkin's paper from Part I in our Redex book. But yes, it's 3x as long.