我是Haskell的新手,但直到现在它真的很有趣.目前我正致力于理解类型和类型类
示例:add :: Integer -> Integer -> Integer.->是正确的联想,这意味着声明类似Integer -> (Integer -> Integer),到目前为止一直很好.但是什么(a->b) -> a -> b意思呢?为什么我们突然使用括号?在我的教科书中,这个声明的一个例子是apply::(a->b)-> a->b带有def 的函数.apply f x = f x.但我不明白,是不是(a->b)单一的功能?
我知道a和b是Typevariables,表明a和b是不同的类型.
我是Haskell初学者,我想知道为什么我们可以在使用某些运算符时丢弃某些变量,例如:
last xs = head (reverse xs)
last' = head . reverse
Run Code Online (Sandbox Code Playgroud)
另一个例子:
example p xs = length (filter p xs)
example' p = length . filter p
Run Code Online (Sandbox Code Playgroud)
为什么我们不能在这个函数中抛出p?