Вызов по имени

Вызов по имени — одна из вычислительных стратегий, в которой вычисление происходит «вширь», то есть при вызове некоторой функции происходит вычисление её результата, а переданные в неё фактические параметры вычисляются только тогда, когда происходит их вызов. Противопоставляется стратегии вызова по значению. В отличие от последней всегда приводит к получению результата в тех случаях, когда результат получить можно.

Другими словами при использовании стратегии вызова по имени первым вычисляется самое внешнее левое выражение. В λ-исчислении вызову по значению соответствует нормальная редукционная стратегия.

ПримерПравить

В качестве примера вычисления выражения, у которого имеется определённый результат, и получить который стратегия вызова по имени позволяет в отличие от стратегии вызова по значению, можно рассмотреть следующий вызов функции. В λ-исчислении имеется терм Ω, который редуцируется сам в себя. Если его передать в качестве параметра в константную функцию (или нечто подобное), то вычисления по стратегии вызова по имени остановятся непосредственно при вызове функции, не углубляясь в вычисления параметров:

( λ x y . y ) Ω (\lambda xy.y)\Omega

Нормальной формой этого терма является λ y . y \lambda y.y , то есть комбинатор тождества I. И стратегия вызова по имени сразу же получает этот результат. В отличие от рассматриваемой стратегии, вызов по значению не позволит получить результат, поскольку сначала попытается вычислить значение терма Ω \Omega , и эти вычисления не прекратятся никогда.

См. такжеПравить