fix関数
code:hs
fix :: (a -> a) -> a
fix f = f (fix f)
定義2
code:hs
fix :: (a -> a) -> a
fix f = let x = f x in x
let x_{n+1} = f x_nのようなイメージから発想すれば、自然に↑のような定義になる
定義を見れば分かる通り、引数に与えた関数が無限に適用される
code:_
fix g
= g (fix g)
= g (g (fix g))
...
= g (g (g (g (... (g (fix g)) ...))))
例えば、(0:)という関数を適用すれば、0の無限リストが得られる
code:hs
fix (0:)
関連
参考
「最も定義されていない不動点」というのは、意味近似順序における最小であるということ fix関数の導出