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?还有另一个简单的(如定义大小)定点函数可以工作吗?
下面是修复函数的实现:
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.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |