Go to the first, previous, next, last section, table of contents.


書替え 練習問題 6 解答「0^0 = 1 を定義する」

EvalRules に規則 `0^0 := 1' を入れるだけです。 例えば、この定義を作る前は Calc の動作は次のようでした。

2:  [-2, -1, 0, 1, 2]                1:  [1, 1, 0^0, 1, 1]
1:  0                                    .
    .

    v x 5 RET  3 -  0                    V M ^

しかし今や、次のように計算します。

2:  [-2, -1, 0, 1, 2]                1:  [1, 1, 1, 1, 1]
1:  0                                    .
    .

    U  ' 0^0:=1 RET s t EvalRules RET    V M ^

もっと驚くことに、この規則は無限大モードにしても正しく機能します。 Calc はいかなる組込み規則よりも EvalRules を先に試みます。 これにより、Calc のデフォルトの振舞いを変更できます。 無限大モードで Calc は 0^0nan に評価しようとしますが、 書替え規則が先に機能して 1 に評価してしまうのです。

悪ふざけですが、EvalRules に規則 2+3 := 6 を追加してください。 どうなりますか? (後でこの規則は間違いなく消してください。 さもないと家計簿の集計に Calc を使ったとき悲しい思いをします!)


Go to the first, previous, next, last section, table of contents.     利用度数