2
data Stream a = a :& Stream a
我明白什麼意思做:&
,卻找不到它`defenition
data Stream a = a :& Stream a
我明白什麼意思做:&
,卻找不到它`defenition
那是的定義。 Stream
類型定義了一個名爲:&
的單箇中綴數據構造函數。比較
data Stream a = StreamCons a (Stream a)
這將定義相同類型,而造成StreamCons
代替:&
作爲數據構造。
中綴數據構造函數不像普通中綴運算符必須以冒號開頭。
隨着StreamCons
構造函數,你constStream
功能看起來像
constStream :: a -> Stream a
-- constStream x = x :& (constStream x)
constStream x = StreamCons x (constStream x)
同樣的函數返回一個無限列表看起來像
constList :: a -> [a]
constList x = x : (constList x)
:&
有異曲同工之妙爲:
,但對於Stream a
而不是[a]
。實際上,Stream
和[]
之間的唯一區別在於Stream a
只包含表示無限的序列的值,而[a]
也包含有限列表。
非常感謝) – bjornmelgaard