我在回顾我的Haskell编程课程中的一个旧考试,我似乎无法将我的头围绕此函数(我认为这里给出的信息太少)。旧考试中Haskell功能的解释
给出的代码是
myId x = x
function n f
| n > 0 = f . function (n-1) f
| otherwise = myId
我知道,如果我例如调用该函数与输入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文学和学习你Haskell的,但在圈已经持续了几天)。
非常感谢。完全得到它(最后点连接:D) – Anticipating
你没有解释为什么第二种类型是正确的。 :) –