Haskell编写自己的函数来编写函数

时间:2016-11-18 02:15:12

标签: function haskell

所以我试着编写自己的函数来在Haskell中编写一个函数n次。

所以例如输入

compose (+1) 3 

会返回f(x) = x+3;

现在我的尝试如下,但实际上非常天真,目前无法正常工作。

compose f 0 = (*1)
compose f n = (compose f n-1).a

1 个答案:

答案 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应该做的事情"没有"。