簡體   English   中英

如何在 haskell 中定義無限/循環代數數據類型?

[英]How can I define an infinite / looped algebraic datatype in haskell?

我有一個這樣定義的音符數據類型:

data Note = Ab | A | Bb | B | C | Db | D | Eb | E | F | Gb | G deriving (Eq, Ord)

我怎樣才能使它成為Enum的實例,以便succ G返回Ab

您必須自己定義Enum實例:

instance Enum Note where
    fromEnum note = case note of
        Ab -> 0
        A  -> 1
        ...
    toEnum n = case n `mod` 12 of
        0 -> Ab
        1 -> A
        ...

toEnum中的“模 12”部分將循環您的筆記。

暫無
暫無

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

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