{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
class Rotcnuf f where
mfap :: f (a -> b) -> a -> f b
instance Functor f => Rotcnuf f where
mfap = flip (fmap . flip ($))
=> Любой Rotcnuf это Functor. Но не наоборот. fmap никак не выразить через mfap - у тебя есть объект типа f a, а в mfap нужно подать f (a -> b).
no subject
=> Любой
Rotcnuf
этоFunctor
. Но не наоборот.fmap
никак не выразить черезmfap
- у тебя есть объект типаf a
, а вmfap
нужно податьf (a -> b)
.