[英]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.