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

时间:2013-07-26 19:58:27

标签: haskell functional-programming algebra

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

所以如果你在Haskell中有一个函数,比如

f :: Double -> Double
f x = x ^ 2 + x

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

1 个答案:

答案 0 :(得分:2)

以下是修复功能的实现:

fix :: (a -> a) -> a
fix f = let x = f x in x

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

g :: Maybe Int -> Maybe Int
g i = Just $ case i of
    Nothing -> 3
    Just _ -> 4

此函数将与fix一起使用,因为它会比读取其输入更快地生成有关其结果的信息。换句话说,Just部分在不查看i的情况下是已知的,这使其能够达到固定点。

当您的功能为Double -> Double并检查其输入时,fix将无效,因为无法部分评估Double