Класс MonadBaseControl
предлагает очень мало законов. Чтобы получить то, что я хочу, мне нужно еще одно:
forall f q. f <$> liftBaseWith q
= liftBaseWith $ \runInBase -> fmap f (q runInBase)
Моя чрезвычайно смутная интуиция предполагает, что это естественно (в некотором смысле) и что оно может даже следовать из некоторой комбинации законов Functor
, параметричности и документированных законов MonadBaseControl
. Это так? Если нет, то есть ли "разумные" случаи, которые не подчиняются закону?
Примечание. Я также задал сокращенную версию этого вопроса как проблему GitHub.