簡體   English   中英

a : -> b 在 Haskell 中是什么意思?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM