我有一個GADT定義如下(略), {-# LANGUAGE StandaloneDeriving #-}
data D t where
C :: t -> D t
R :: D b -> D (Either a b)
deriving instance Show t => Show (D t)
編譯器正確地抱怨說,它不能獲得顯示R.在這種情況下,我們有(無論是AB)是類
是否有描述數據類型 恰好有兩個構造一個字;和 不遞歸? 即描述了這些類型的 data Bool = False | True
data Maybe a = Nothing | Just a
data Either l r = Left l | Right r
,但不包括這些類型 data Ordering = LT | EQ | GT -- too many constructors
d
其他然後內存鑄造技巧是有什麼辦法可以使用無標記的工會 (數據類型,明確持有一組類型不是一個標籤聯合之一, 即,一個是被編譯器強制保存關聯的類型標記,並且可能只有該語言才允許獲得正確類型的值) 沒有在容納它的容器中的關聯類型標記? 未標記的工會對類型化工會有什麼其他優勢嗎? 編輯:顯示我的意思例如在Haskell標籤聯合 data U = I Int | S String
手動在C標籤聯合 en
如果我有一個Haskell ADT如: data Foo
= A Int Double
| B Bool [Integer]
| C (Maybe String) Float
的A,B,和C被稱爲數據構造;有時可以看作價值構造函數。但是什麼是正確的名稱: 「行/備選」:例如, B Bool [Integer];和「行/備選」的「字段/元素」:例如, Double in A或 [Integ
我剛開始學習Haskell。我想我已經掌握了基礎知識,但我想確保我實際上也在強迫自己在功能上進行思考。 data Dir = Right | Left | Front | Back | Up | Down deriving (Show, Eq, Enum)
inv Right = Left
inv Front = Back
inv Up = Down
無論如何,我想要做JIST是創建一個