次の関数を使用して、Haskell で階乗を計算する関数を作成する方法はありますか。
fix f = f (fix f)
次の関数を使用して、Haskell で階乗を計算する関数を作成する方法はありますか。
fix f = f (fix f)
オリジナルであること
fac = (fix ((1:) . zipWith (*) [1..]) !!)
はい。些細な方法:
factorial = fix go 1 where
go f acc n = fact acc n
どこでfact acc n === acc * n!
。もちろん、これはまったくばかげた定義です。
f
パラメータを使用するようにばかげた定義を変更する方法がわかりますか? これは、うまくいけば、すでに書いた明示的な再帰的定義の構造を模倣します。