wvogel日記

自分用の技術備忘録が多めです.

ghci複数行定義

量子論がひと段落ついたので、ghciを実験。
ghciを、関数試験用として利用価値を高めるため、複数行にわたる関数定義の書き方をば。

Prelude> :{
Prelude| let {
Prelude|     fibo 1 = 1;
Prelude|     fibo 2 = 1;
Prelude|     fibo n = fibo (n-1) + fibo (n-2)
Prelude|     }
Prelude| :}
Prelude> fibo 5
5
Prelude> fibo 30
832040

フィボナッチ数列
要は、
:{
~
:}
で括ってやればよいんですね。

Prelude> :{
Prelude| let { f :: Int-> Int;
Prelude|       f k = 2*k
Prelude|     }
Prelude| :}
Prelude> f 2
4

このように、型を定義してやることもできる。



型クラスを使った定義を同様にすると、

Prelude> :{
Prelude| let {
Prelude|      f :: Integral a => a -> a
Prelude|     ;f 1 = 1
Prelude|     ;f n = n * f (n-1)
Prelude|     }
Prelude| :}
Prelude> f 4
24

と、やっぱりこれも大丈夫。
これで関数試験としての利用価値が高まりますね!