「名前呼び」とはどういう意味ですか?
目次
呼び出し時評価(call-by-name)は、プログラミング言語での式の評価方法の一つだよ。このアプローチでは、プログラムは値が実際に必要になるまで式を評価しないんだ。つまり、値が使われなければ、計算すらされないってこと。
仕組み
呼び出し時評価を使うと、関数が呼ばれるたびに引数は事前に評価されずに渡されるよ。もし関数がその引数を使うなら、その時に評価される。引数が関数内で使われなければ、無駄な計算を防げるんだ。
利点
呼び出し時評価の主な利点は、時間とリソースを節約できること。もし式が複雑でいつも必要じゃないなら、その値を計算するのに無駄な労力を使わないからね。これで特定のケースではプログラムが速くて効率的になりうるんだ。
欠点
でも、呼び出し時評価には問題もあるよ。引数に副作用がある場合、つまり値を返すだけじゃなくて何かをする場合、その引数が関数内で複数回使われると、その副作用が何度も起こり得るんだ。これがプログラムの予期しない動作を引き起こすこともある。
値呼び出しとの比較
呼び出し時評価は、値呼び出し(call-by-value)としばしば対比されるよ。値呼び出しでは、引数は関数に渡される前に評価されるんだ。これはもっとシンプルだけど、使われない値のために余計な作業をする場合もあるんだよね。