3

在学习 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
4

1 回答 1

5

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

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

是一个函数foofrom atob并且类型a必须有一个类的实例Show

在 OO 语言中,它会是这样的

public B foo<A,B>(A x) where A:IShow
于 2016-02-26T05:34:15.840 回答