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