所以我正在尝试编写自己的函数来在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)
在第二种情况下,你试图引用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应该做"没有" 的想法.