簡體   English   中英

Haskell:如何創建一個空列表作為數據類型的選項?

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

(假設ABC是固定類型。如果要定義任意類型的三元組,則需要參數化E

data E a b c = Zero | Triple a b c

)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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