Home > 一般 > 久々にHaskellでフィボナッチ数を計算する関数を書いてみた

久々にHaskellでフィボナッチ数を計算する関数を書いてみた

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
★下記に2つの英単語をスペースで区切って入力してください

Home > 一般 > 久々にHaskellでフィボナッチ数を計算する関数を書いてみた

Search
Feeds

Page Top