有人知道如何执行给定功能超过自身n次的功能吗?基本上是f(f(x))n次
addOne :: Int -> Int
addOne x = x+1
addOne' :: [Int] -> [Int]
addOne' [] = []
addOne' (x:xs) = addOne x : addOne' xs
addOne'' :: Int -> [Int] -> [Int]
addOne'' ????
所以我想对自身进行n次功能addOne'。谢谢!
不清楚您要查找什么,但是您可能对iterate
函数感兴趣,该函数将参数反复应用于初始值以创建一个列表,每个元素在某个步骤记录结果。] >
iterate :: (a -> a) -> a -> [a] iterate f x = x : iterate f (f x)
如果采用结果列表的第n个元素,则将是该函数被应用n次的结果。
iterate f x !! n == f . f .... f . f $ x
-- '-- n times ---'