【发布时间】:2019-05-04 03:23:17
【问题描述】:
大家好,我正在尝试实现高阶函数修复,它从初始点 x 计算任意函数 f :: a -> a 的 attractive fixed point。也就是说,对于给定的f 和x,形式为fᴷ(x) 的不动点。
-- CONTRACT
fix :: Eq a => (a -> a) -> a -> a
-- DEFINITION [TODO: Implement fix]
fix f x = ?
我目前的尝试是:
fix f x | f x == x = x
| otherwise = fix f x
where x = f x
注意:您的 如果函数从一开始就没有收敛,函数将不会终止 点。 有人能帮助我吗 ?我试过了,但它没有返回任何东西
【问题讨论】:
-
你能分享一下你的尝试吗?
-
修复 f x | f x == x = x |否则 = 修正 f x 其中 x = f x
-
你的函数类型不对。定点组合器的类型为
fix :: (a -> a) -> a。 -
@AaditMShah 这是一个很好的签名,它只是一个不同于 PL 人喜欢的
fix。 -
不,没有错。这是一个家庭作业!
标签: haskell fixpoint-combinators