{-# LANGUAGE PolyKinds #-} module Type.Functor where infixl 4 <$> type f <$> as = FMap f as type family FMap (f :: l -> k) (as :: [l]) :: [k] where FMap f '[] = '[] FMap f (a ': as) = f a ': FMap f as