
#12772: (type f1 ~> f2 = forall a. f1 a -> f2 a) to core libraries -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: feature | Status: new request | Priority: normal | Milestone: Component: Build System | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Is this something that belongs to core libraries (it has other names in the wild, `:~>`, `Natural`..) {{{#!hs type f1 ~> f2 = forall a. f1 a -> f2 a }}} I use it all the time and end up redefining it (it is such a short type that maybe it's not worth it) {{{#!hs unLift :: Applicative f => Lift f a -> f a mapLift :: (f a -> g a) -> (Lift f a -> Lift g a) mapFreeT :: (Functor f, Functor m) => (forall a. m a -> m' a) -> (FreeT f m a -> FreeT f m' a) mapFreeT :: (Functor f, Functor m) => (forall a. m a -> m' a) -> (FreeT f m a -> FreeT f m' a) vmap :: (a -> a') -> (Vec a n -> Vec a' n) liftIO :: MonadIO m => IO a -> m a hoist :: Monad m => (forall a. m a -> n a) -> (t m b -> t n b) }}} becomes {{{#!hs unLift :: Applicative f => Lift f ~> f mapLift :: (f ~> g) -> (Lift f ~> Lift g) mapFreeT :: (Functor f, Functor m) => (m ~> m') -> (FreeT f m ~> FreeT f m') vmap :: (a -> a') -> (Vec a ~> Vec a') liftIO :: MonadIO m => IO ~> m hoist :: Monad m => (m ~> n) -> (t m ~> t n) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12772 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler