我正在复习我的 Haskell 编程课程中的一项旧考试,我似乎无法理解这个功能(我认为给出的信息太少了)。
给出的代码是
myId x = x
function n f
| n > 0 = f . function (n-1) f
| otherwise = myId
我知道,例如,如果我使用 input 调用函数2 (*2)
,我将得到一个函数作为结果。如果我调用它,(-2) (*2) 1
我会得到结果1
。
我就是不知道怎么办?我也无法理解函数的类型转换。
我知道这两个选项是正确的,但我不明白为什么(可能括号让我感到困惑)。
function :: (Num a, Ord a) => a -> (a -> a) -> a -> a
function :: (Num a, Ord b) => a -> (b -> b) -> b -> b
任何人都可以澄清我应该如何“阅读”这个函数以及我应该如何理解类型转换的工作原理(一直在阅读我的 Haskell 文献编程和 Learn You a Haskell 但现在已经循环了几天)。