所以我试着编写自己的函数来在Haskell中编写一个函数n次。
所以例如输入
compose (+1) 3
会返回f(x) = x+3
;
现在我的尝试如下,但实际上非常天真,目前无法正常工作。
compose f 0 = (*1)
compose f n = (compose f n-1).a
答案 0 :(得分:7)
在第二种情况下,您尝试引用a
,我认为您的意思是f
,从那时起
compose f n = (compose f (n-1)) . f
(另请注意,compose f n - 1
在您的代码中被解析为(compose f n) - 1
表示你有
compose f 3 = (compose (+1) 2) . f
= ((compose (+1) 1) . f) . f
= (((compose (+1) 0) . f) . f) . f
= ((((*1) . f) . f) . f
哦,顺便说一下,你可以写
compose f 0 = id
表达了compose f 0
应该做的事情"没有"。