[英]What does a : -> b mean in Haskell?
我正在尝试在 Haskell 中实现一个字典,我看到数据类型必须是
data Rel a b = a :-> b
但我不明白这是什么意思,我认为它与键值或类似的东西是一样的
看起来:->
只是一个花哨的构造函数名称:
Prelude> data Rel a b = a :-> b
Prelude> :t (5 :-> 6)
(5 :-> 6) :: (Num a, Num b) => Rel a b
在这段代码中, 5 :-> 6
产生一个Rel
值。
例如,可以使用data Rel ab = a :-% b
代替,其中:-%
将是构造函数名称。
此声明定义了:->
含义:它是一个中缀数据构造函数。
> :t 3 :-> 5
3 :-> 5 :: (Num a, Num b) => Rel a b
定义也可以写成
data Rel a b = (:->) a b
在通常的前缀符号中。
它很像普通的中缀运算符,只是中缀数据构造函数必须以:
开头。 您可能已经看过列表类型的伪 Haskell 定义:
data [] a = [] | a : [a]
它将(:)
定义为非空列表的中缀数据构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.