在纯脚本中; -> 和 => 有什么区别?
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
是一个函数 foo
从 a
到 b
类型 a
必须有一个 class Show
[=21 的实例=]
在 OO 语言中它会像这样
public B foo<A,B>(A x) where A:IShow
在学习 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
是一个函数 foo
从 a
到 b
类型 a
必须有一个 class Show
[=21 的实例=]
在 OO 语言中它会像这样
public B foo<A,B>(A x) where A:IShow