New answers tagged


You want to apply (λz.zz) to the argument (λb.b) Call by value means: reduce the argument to normal form and then bind the parameter z to it Call by name means: replace each occurrence of the parameter z in the body of the function by the unevaluated argument Since λb.b is already in normal form, it does not make a difference whether you use call by ...


Neither of these steps is correct, there is only one reducible expression in that term so in both cases the only valid step is to (\b. b)(\b. b). You are only allowed to perform a reduction when applying a lambda abstraction and there is only one place where you are doing that, namely on the outermost level.

Top 50 recent answers are included