Y - コンビネータ
私はY-コンビネーターについて学ぼうとしており(その説明も素敵です) 、このwikiの例に出くわしました。この件に関する詳細な説明は、Haskell または Python のいずれかで大歓迎です。お願いします!
コード
fix :: (a -> a) -> a
fix f = f (fix f)
問題
が適用されたときに呼び出された関数がfix
返されますが、その理由はわかりません。スタックをたどると、 が視覚化されます。9
fix
(\x -> 9)
f(f ... (fix f) ...)
>> fix (\x -> 9)
>> 9