2016-10-25 49 views

回答

9

的定義。 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]也包含有限列表。

+0

非常感謝) – bjornmelgaard