Вызов по значению
Вызов по значению — одна из вычислительных стратегий, в которой вычисление происходит «вглубь», то есть при передаче в функцию какого-либо параметра, значение этого параметра всегда вычисляется перед фактической передачей. Противопоставляется стратегии вызова по имени. В отличие от последней может не привести к получению результата даже в случае, если результат вычислений получить можно.
Другими словами при использовании стратегии вызова по значению первым вычисляется самое внутреннее (находящееся на самом низком уровне вложенности) выражение. В λ-исчислении вызову по значению соответствует аппликативная редукционная стратегия.
Пример[править | править код]
В качестве примера вычисления выражения, у которого имеется определённый результат, но получить который стратегия вызова по значению не позволяет, можно рассмотреть следующий вызов функции. В λ-исчислении имеется терм Ω, который редуцируется сам в себя. Если его передать в качестве параметра в константную функцию (или нечто подобное), то вычисления по стратегии вызова по значению никогда не остановятся:
Нормальной формой этого терма является , то есть комбинатор тождества I. Однако стратегия вызова по значению сначала попытается вычислить значение терма , и эти вычисления не прекратятся никогда. В отличие от рассматриваемой стратегии, вызов по имени позволяет непосредственно получить результат применения (нормальную форму вышеуказанного терма).