fib((-1+)->n@((-1+)->m))|m<0=1|((,,fib n)m->(fib->x,_,y))<-()=x+y
ViewPatterns, PatternGuards, TupleSections の拡張機能を使ってみたかっただけともいう.
View patterns はパターン部分に計算を書けるしそれを連ねることもできるので(関数結合と逆向きだけど),なんとなくモナド(のbind演算子)でプログラムを書いている気分を味わえる気がする.Pattern guards はまあ面白い使い方がまだ思いつかない.Tuple sections は場合により便利だけど変なプログラムを書くのには使いにくいかも? λ式にも view patterns 書けるので,かっこを使いまくりな id 関数とか:
i=(\((,)() -> ((),x)) -> x)
ついでなので階乗を求める関数も.
fact n|1>n=1|((-1+)->fact->x)<-n=n*x
- Newer: ことはじめ