В C мы определяем enum следующим образом:
enum E {
E0,
E1,
E2 = 3,
E3
};
Обратите внимание на выражение E2 = 3
, результат типа перечисления будет E0 == 0, E1 == 1, E2 == 3, E3 == 4
.
В Haskell у нас нет возможности указать перечисление в объявлении. Единственный способ реализовать прерывистое перечисление - это реализовать класс Enum
вручную.
Есть какой-нибудь удобный способ это сделать?
Я написал демонстрацию, используя Template Haskell для создания экземпляра Enum
.
data E = E0
| E1
| E2_3
| E3
deriving Show
enum ''E
Интересно, есть ли библиотеки, пытающиеся восполнить этот пробел?