書籍「7つの言語7つの世界」Io言語やってみる
フィボナッチ数
fib := method(n, if(n < 2, n, fib(n - 1) + fib(n - 2)) ) Io> fib(10) ==> 55
ループ版
fib := method(n, fir ::= 0 sec ::= 1 tmp ::= 0 n repeat( tmp = sec sec = sec + fir fir = tmp ) fir ) fib(31) println
分母がゼロの時答えがゼロになるように
Io> 42 type ==> Number
数字はNumberクラスなんだなぁ
んで
Number / := method(n, if(n == 0, 0, self / n))
これでは無限ループになってしまう
割り算のメソッドをコピーすればいいと思いついたまではよかったけど、どうやって取得できるかで詰まった
# div := / これじゃダメ div := Number getSlot("/") Number / := method(n, if(n == 0, 0, self div(n)))
未だに引数がいつ評価されるかわからない