У меня есть объектив (')
myLens' :: (Functor f) => (a -> f a) -> (s -> f s)
И мне нужна функция
lensWithoutFunctor' :: ((a -> b) -> (f a -> f b)) -> (a -> f a) -> (s -> f s)
(Особый интересующий меня тип -
type PopType x a = x -> Maybe (a, x)
, который можно превратить в Functor, если я захочу)
Есть ли лучший способ сделать это, кроме создания нового типа, реализующего Functor, и затем сделать что-нибудь с участием "ala"?