Library function to compose a function with itself n times

前端 未结 10 2005
野的像风
野的像风 2020-11-30 03:36

Is there a library function available in Haskell to compose a function with itself n times?

For example I have this function:

func :: a ->         


        
10条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-30 04:29

    \xs n -> iterate func xs !! n
    

    (xs is the initial value, n is the number of times to apply func)

    I don't know why, but I feel like iterate is something people aren't consistently exposed to when learning Haskell.

    If you don't like !! then you could use zip and lookup as an alternative. (some people/groups/tools don't like functions that call "error" in certain cases, I'm not claiming lookup is any better in these cases)

    lookup n . zip [0..] . iterate func
    

    EDIT: Ok, so I deleted then undeleted because I agree with the other answerer - you shouldn't discount use of iterate just because it gives you more than you need.

提交回复
热议问题