由于Nothing >>= f = Nothing
对于 every f
,以下简单定义适用于mfix
:
mfix _ = Nothing
但这没有实际用途,因此我们有以下非全定义:
mfix f = let a = f (unJust a) in a where
unJust (Just x) = x
unJust Nothing = errorWithoutStackTrace "mfix Maybe: Nothing"
如果这个- 子句不会停止,如果mfix f
返回就好了。(例如,)
这是不可能的,因为停机问题是无法解决的吗?Nothing
let
f = Just . (1+)