可以在多项式上使用定点函数吗?

Sen*_*agi 5 haskell functional-programming algebra

我想到了一种在Haskell中表示代数数字作为近似流的方法.您可以通过一些根查找算法来完成此操作.但那没什么好玩的.所以你可以添加x多项式,减少问题,找到它的固定点.

所以如果你在Haskell中有一个函数就好

f :: Double -> Double
f x = x ^ 2 + x
Run Code Online (Sandbox Code Playgroud)

我从概念上理解为什么修复不起作用,也就是说,我可以很容易地验证它不起作用,但不是真正的最不固定的f?还有另一个简单的(如定义大小)定点函数可以工作吗?

Nov*_*zen 2

下面是修复函数​​的实现:

fix :: (a -> a) -> a
fix f = let x = f x in x
Run Code Online (Sandbox Code Playgroud)

它不适用于像Double. 它适用于具有更复杂结构的类型。例如:

g :: Maybe Int -> Maybe Int
g i = Just $ case i of
    Nothing -> 3
    Just _ -> 4
Run Code Online (Sandbox Code Playgroud)

该函数可以使用fix,因为它生成有关结果的信息比读取输入的速度更快。换句话说,该Just部分根本不用看就知道i,这使得它能够到达一个固定点。

当您的函数是Double -> Double并检查其输入时,fix将无法工作,因为无法部分评估Double.