fromEnumについて
Twitterで流れてきたこれを見て、あれ?と思ったので調べてみました
fromEnum???
数字ならその数字を、文字なら、文字コードを返すらしい。
ghciで調べてみる
Prelude> :t fromEnum fromEnum :: Enum a => a -> Int
なるほど
列挙型ならいいのか
というわけで、ちょっと試しに
Prelude> data Num = Zero | One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten deriving (Enum , Show) Prelude> fromEnum One 1 Prelude> fromEnum Nine 9
この場合はインデックスを返すらしい(?)
という事は
Prelude> :i Bool data Bool = False | True -- Defined in `GHC.Types' Prelude> fromEnum (1==1) 1 Prelude> fromEnum (1==2) 0
これだけの事だったのか。
ちなみに…
数列表記も列挙型ならいいらしいので
Prelude> data Num = Zero | One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten deriving (Enum , Show) Prelude> [Zero .. Ten] [Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten] Prelude> [Zero, Two ..] [Zero,Two,Four,Six,Eight,Ten]
こんなことも出来ちゃうみたいです。