J.C. Mitchell cites in his Expressive power of programming languages the result in Riecke's Fully abstract translations between functional languages about the call-by-value, call-by-name and lazy versions of the language PCF.He mentions: In lazy PCF, call-by-name evaluation order is used, but additionally termination is observed using some convergence-testing language primitive.In general terms, he says, the main results are that call-by-value and lazy PCF are equally expressive (apparently shown in Riecke by means of an abstraction-preserving reduction), and both are more expressive than call-by-name PCF.The first part, of this previous statement is intuitive. The second is not yet to me.EDIT: Removed some nonsense I had written earlier.
Is there is an intuitive explanation why call-by-name PCF is less expressive than both call-by-value PCF and lazy PCF?
pl.programming languages;functional programming;semantics