While trying to summarize my knowledge about lambda calculus, I understood that I'm quite familiar with call-by-value but I've never seen сall-by-need reduction semantics. I know the definition, but it would be great to see precise meaning.
This is what I have for call-by-need and call-by-value (not very detailed description):
Call-by-value
Small Step
Values
β-reduction
Evaluation context
Big Step (with closures and environment)
Closures
Environment
Reduction
Call-by-name
Small Step
β-reduction
Evaluation context
I guess there is also a big step, which must be quite similar to call-by-value, but once again, its better to see it once.
So I will be grateful if someone can extend my list with call-by-need.
Currently I cannot write this in Tex, but the main thing is: when using pure functions the evaluated value of a function with the same parameter(s) will be always the same, so while you are in the same body, you can use the evaluated reference instead of evaluating it again.
For more information see: http://repository.readscheme.org/ftp/papers/plsemantics/felleisen/jfp96-af.pdf