Этот вопрос посвящен построению правильного экземпляра Monad
из чего-то, что является монадой, но только при определенных ограничениях - например Set
. Трюк состоит в том, чтобы обернуть его в ContT
, который отбрасывает ограничения на обертку/разворачивание его значений.
Теперь я хотел бы сделать то же самое с Applicative
s. В частности, у меня есть экземпляр Applicative
, чья чистая имеет ограничение типа-типа. Есть ли аналогичный трюк, как построить действительный экземпляр Applicative
?
(Существует ли "мать всех аппликативных функторов" так же, как есть для монады?)