最佳答案
我对 fix
的文档有点困惑(尽管我想我现在已经知道它应该做什么了) ,所以我查看了源代码。这让我更加困惑:
fix :: (a -> a) -> a
fix f = let x = f x in x
这到底如何返回一个固定点?
我决定在命令行中尝试一下:
Prelude Data.Function> fix id
...
挂在那里。说句公道话,这是在我的老 Macbook 上,有点慢。但是,这个函数不可能是 也是,因为传递给 id 的任何内容都会返回相同的内容(更不用说它会占用任何 CPU 时间)。我做错了什么?