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

Bob*_*ley 3 haskell function

所以我正在尝试编写自己的函数来在Haskell中组合一个函数n次.

例如,输入

compose (+1) 3 
Run Code Online (Sandbox Code Playgroud)

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

现在我的尝试如下,但实际上很幼稚,目前无效.

compose f 0 = (*1)
compose f n = (compose f n-1).a
Run Code Online (Sandbox Code Playgroud)

Cac*_*tus 7

在第二种情况下,你试图引用a我认为你的意思f,从那时起

compose f n = (compose f (n-1)) . f
Run Code Online (Sandbox Code Playgroud)

(另请注意,在代码中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
Run Code Online (Sandbox Code Playgroud)

哦,顺便说一句,你可以写

compose f 0 = id
Run Code Online (Sandbox Code Playgroud)

它表达了compose f 0应该做"没有" 的想法.

  • 是的,因为它被解析为`((compose fn) - 1)`即它试图从`compose fn`中减去1而不是数字. (2认同)