->
和有什么区别=>
?在函数的声明中?
foobar :: Integer -> Integer -> [Integer]
->
用于功能需要。签名的x -> y
意思是“一个接受一个x
并返回一个y
”的函数。
=>
用于处理类。每个类型签名只能出现一次。它左边的东西是一个“上下文”,列出了哪些类型必须是哪些类的实例。右边的东西是一个普通的类型签名。
例如,(Num x, Show y) => x -> y -> String
将指示x
必须是数字类型并且y
必须是可显示类型。
阅读类型约束。
基本上foo :: (X a) => a -> b
意味着 typea
必须有一个 type 的实例 class X
。