n次Haskell的合成函数

问题描述 投票:0回答:1

有人知道如何执行给定功能超过自身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'。谢谢!

haskell function-composition
1个回答
0
投票

不清楚您要查找什么,但是您可能对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 ---'
© www.soinside.com 2019 - 2024. All rights reserved.