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

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

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

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

Пример[править]

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

\((\lambda xy.y)\Omega\)

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

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