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