让我谈谈一个组合器。它被称为“定点组合器”,它具有以下属性:
属性:“定点组合器”接受一个函数f :: (a -> a)
并发现该函数的“定点” x :: a
,使得f x == x
. 固定点组合器的某些实现在“发现”方面可能更好或更差,但假设它终止,它将产生输入函数的固定点。任何满足该属性的函数都可以称为“定点组合器”。
将此称为“定点组合器” y
。根据我们刚才所说,以下情况属实:
-- as we said, y's input is f :: a -> a, and its output is x :: a, therefore
y :: (a -> a) -> a
-- let x be the fixed point discovered by applying f to y
y f == x -- because y discovers x, a fixed point of f, per The Property
f x == x -- the behavior of a fixed point, per The Property
-- now, per substitution of "x" with "f x" in "y f == x"
y f == f x
-- again, per substitution of "x" with "y f" in the previous line
y f == f (y f)
所以你去。您已经根据定点组合器的基本属性定义 了: . 您可以假设表示发散的计算,而不是假设发现,并且仍然得出相同的结论(iinm)。y
y f == f (y f)
y f
x
x
由于您的函数满足 The Property,因此我们可以得出结论,它是一个定点组合子,并且我们已经说明的其他属性(包括类型)适用于您的函数。
这并不是一个可靠的证据,但我希望它能提供更多的见解。