在纯脚本中; -> 和 => 有什么区别?

In Purescript; What is the difference between -> and =>?

在学习 PureScript 教程时,代码示例开始使用“=>”而不引入它。结果我不明白什么时候使用'=>'而不是'->'。

例如,这使用“=>”:

instance showArray :: (Show a) => Show (Array a) where
    show array = "[" <> map show array <> "]"

这里使用 '->':

greet :: forall r. { name :: String | r} -> String
greet namedThing = "Hello, " ++ namedThing.name

(Show a) => 是类型约束,它将类型 a 限制为 class Show 的实例,而 a -> b 是一种函数类型。所以这段代码

foo :: forall a. (Show a) => a -> b

是一个函数 fooab 类型 a 必须有一个 class Show[=21 的实例=]

在 OO 语言中它会像这样

public B foo<A,B>(A x) where A:IShow