根据定义,定点组合器并不总能产生正确的答案:
fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)
以下代码不会终止:
fix (\x->x*x) 0
Run Code Online (Sandbox Code Playgroud)
当然,fix不能总能产生正确的答案,但我很纳闷,这可以改进吗?
当然,对于上面的例子,可以实现一些看起来像的修复
fix f x | f x == f (f x) = f x
| otherwise = fix f (f x)
Run Code Online (Sandbox Code Playgroud)
并给出正确的输出.
是什么原因导致上面的定义(或更好的东西,因为这个只有1个参数的句柄功能)不被使用?