Я хотел бы использовать Servant Монада ClientM с finally :: MonadBaseControl IO m => m a -> m b -> m a, но возникла ошибка No instance for (MonadBaseControl IO ClientM).

Как ни странно, именно этот экземпляр выглядит уже определено, будь то из внутренний модуль.

Нужно ли мне каким-то образом явно импортировать такие экземпляры?

1
Kiara Grouwstra 21 Май 2018 в 00:57

1 ответ

Лучший ответ

Он отлично работает, если, как сказал Даниэль, вы импортируете модуль, определяющий желаемый экземпляр:

Prelude> import Control.Exception.Lifted
Prelude Control.Exception.Lifted> import Servant.Client
Prelude Control.Exception.Lifted Servant.Client> :set -XTypeApplications
Prelude Control.Exception.Lifted Servant.Client> :type finally @ ClientM
finally @ ClientM :: ClientM a -> ClientM b -> ClientM a
3
Thomas M. DuBuisson 21 Май 2018 в 03:54