Из функторов, которые не являются применимыми:
Конструктор типа, который является функтором, но не аппликативным. Простым примером является пара:
instance Functor ((,) r) where fmap f (x,y) = (x, f y)
Но нет способа определить свой экземпляр
Applicative
, не налагая дополнительных ограничений наr
. В частности, нет способа определитьpure :: a -> (r, a)
для произвольногоr
.
Здесь pure
не может быть определен для всех типов одновременно; однако для любого бетонного типа T
можно сделать ((,) T)
аппликативным.
Вопрос: Есть ли пример конкретного функтора (т.е. не имеющих переменных типа), который является функтором, но не аппликативным?