Этот импорт:
import Data.Singletons.TH
(
FalseSym0,
FromEnum,
MaxBound,
MinBound,
PEq,
PShow,
ShowsPrec,
ShowStringSym0,
SShow,
ToEnum,
TrueSym0,
sShowsPrec,
sShowString
)
завершается неудачно со следующей ошибкой:
error:
Cannot find type of method Data.Singletons.Prelude.Enum.toEnum
|
23 | $(singletons [d|
| ^^^^^^^^^^^^^^...
error: Q monad failure
|
23 | $(singletons [d|
| ^^^^^^^^^^^^^^...
Когда импорт изменяется на:
import Data.Singletons.TH
все работает просто отлично.
Добавление toEnum
в список импорта для Data.Singletons.TH
завершится неудачно с:
error:
Module ‘Data.Singletons.TH’ does not export ‘toEnum’
|
21 | toEnum
| ^^^^^^
Из того, что я могу сказать, часть кода, вызвавшая это здесь:
$(singletons [d|
data DoorState :: Type where
Opened :: DoorState
Closed :: DoorState
Locked :: DoorState
deriving (Bounded, Data, Enum, Eq, Show, Typeable)
|])
$(singletons [d|
class Cycle a where
next :: a -> a
prev :: a -> a
|])
instance forall a. (Bounded a, Enum a, Eq a) => Cycle a where
next x
| x == maxBound = minBound
| otherwise = succ x
prev x
| x == minBound = maxBound
| otherwise = pred x
Какую функцию нужно добавить в список импорта, чтобы все работало правильно?Почему эта функция не отображается в сообщении об ошибке.