Вызов по значению

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

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

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

Пример[править | править код]

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

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

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

См. также[править | править код]