個人的には、普段は関数定義をするときあまり考えず、 := を使っている。
:= を使わないとまずい場合として、 すぐ思い浮かぶのは
:= が使えない場合として、Mathematica のチュートリアルには、 次のようなことがあげられている。 計算の結果として得られた式の中のパターンに、 何かを「代入」してどうなるか調べる場合、 /. を使った一時的代入で済むけれど、 関数を定義する場合には := でなく = を使う。 要するに =% は通るけれど、:=% は通らない、 ということだよね。
チュートリアルに載っている例 |
D[Log[Sin[x]]^2, x] dlog[x_] = % |
dlog[x_] := 2 Cot[x] Log[Sin[x]] |
個人的な経験では、 重い計算が必要だが、それは1回だけやっておけば済むような場合に、 := を使った関数定義の右辺に書いてしまうと、 効率が落ちて困った経験がある。 でもそれは、:= と = の問題というよりは、 もっと別の問題かもしれない。
桂田 祐史