Ioという言語を触ってみる2

セルフスタディ2日目(とあるが、e_c_e_tはここにたどり着くまで結構時間を要した)

fib := method(n
             ,if(n==0 or n==1
                , 1
                , fib(n-1) + fib(n-2)))

再帰はあまり悩まなかった。インデントをどうやれば見やすいのかよくわからん。

a := list(1, 1)
# ループを使って、フィボナッチ数列をリストで作る。
a for(i,1,10, append(a at(-1) + a at(-2))
# リストの末尾を取る
a at(-1)

色々苦心したが、at(-1)なんて、便利なものを見つけたのでループはコレとした。ちなみに「7つの言語7つの世界」では、シンタックスシュガーなど、ない、ということになっているんだが。まぁいいや。

    • 分母がゼロの時、ゼロを返すように/演算子を変更する
# aに Number型の/ の処理を保管(他にもやり方があったらしい、と、あとで気づく)
a := Number getSlot("/")
# aのサンプル、これは10/2と同じ処理
10 a(2)
# Numberの/をaを使って書き換える
Number / := method(n
                  ,if( n==0
                     , 0
                     , self a(n)))

今日はここまで。