Uda*_*dar 2 haskell functional-programming
如果标题具有误导性,我很抱歉,但我什至不确定我的问题是什么。我有以下练习:
如果 fx==x(即 f 将 x 映射到自身),我们称 xa 为函数 f 的固定点。编写一个函数 fixpoint,它接受函数 f :: Integer -> Integer 并返回最小的非负整数 x,它是 f 的固定点。
到目前为止,我能想到的是:
fixpoint :: (a -> a) -> a
fixpoint f = min [f x | x<-[0..n], f x == x ]
Run Code Online (Sandbox Code Playgroud)
但它显然有缺陷,因为 n 无处不在。
我也尝试过其他事情,但它们是明显的错误。
这个练习的可能解决方案是什么?我是 Haskell 的新手,我什至不知道如何思考这个问题。
还有其他方法可以解决它,但是扩展您的想法,您可以使用它[0..]来创建一个无限列表,因此您不需要n. 那么你不能接受min无限列表的 ,因为它永远不会完成,但由于你的列表计数,最小的将是第一个,所以你可以使用head:
fixpoint f = head [f x | x <- [0..], f x == x]
Run Code Online (Sandbox Code Playgroud)