関数 を使用して、この階乗の例がどのように機能するかを理解しようとしていますfix :: (a -> a) -> a
。
factabs :: (Num a, Eq a) => (a -> a) -> a -> a
factabs fact 0 = 1
factabs fact x = x * fact (x-1)
f :: (Num a, Eq a) => a -> a
f = fix factabs
なぜこの型を持っているのかわかりませんfix factabs
...fix
は type の関数を期待していますが、それを typeの関数 (2 つのパラメーターを受け取る関数)a -> a
に適用するにはどうすればよいでしょうか? (a -> a) -> a -> a
私は完全に混乱しています...
limit
基本的に、以下の関数を を使用するものに変換する方法を見つけようとしていfix
ました。助けていただければ幸いです。
limit f n
| n == next = n
| otherwise = limit f next
where
next = f n