[英]Haskell: How can I create an empty list as an option for a datatype?
在使用ghci編譯器的Haskell中,要創建一個為空或具有三元組的數據類型。 我試圖創建一個空類型,但是我的數據類型E不允許我使用它。 您如何正確聲明這一點?
type Empty = []
data E = Zero Empty | Triple A B C
我不斷收到此錯誤:期望對“ Empty”再輸入一個參數,但需要一個類型,但是“ Empty”的類型為“ *-> *”
您正在混合使用類型和數據構造函數,並使用類型構造函數[]
(通過別名Empty
,期望使用普通類型)。
考慮一下列表構造函數的偽Haskell定義:
data [] a = [] | a : ([] a)
這里, []
既是類型為* -> *
的類型構造函數,又是類型為[a]
的空數據構造函數,表示空列表。
對於您的類型,請執行相同的操作: Zero
只是一個無效的數據構造函數。
data E = Zero | Triple A B C
(假設A
, B
和C
是固定類型。如果要定義任意類型的三元組,則需要參數化E
:
data E a b c = Zero | Triple a b c
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.