刚开始学习Haskell。有人可以这么解释这个声明的意思吗?
data Stream a = a :& Stream a
我知道它建立了一个无限类型a的流,类似于Data / Stream所做的,只是Data / Stream使用Cons:
data Stream a = Cons a (Stream a)
但我不知道这:&
意味着什么。(:)
是一个串联运算符,但Haskell中没有(:&)
或(&)
运算符。
但我不知道这
:&
意味着什么。
在这里,它们用作:&
中缀数据构造函数。因此Cons
,您应该使用而不是在数据声明中使用like :&
。等效的定义可能是:
data Stream a = (:&) a (Stream a)
实际上,您可以将:
运算符视为另一个infix数据构造函数。
如Haskell语法中:
所指定,中缀数据构造函数应以冒号()开头:
consym → ( : {symbol}) ⟨reservedop⟩
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句