{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE NoImplicitPrelude
, RankNTypes
, ExistentialQuantification
#-}
{-# OPTIONS_HADDOCK hide #-}
------------------------------------------------------------------------------- |-- Module : GHC.Desugar-- Copyright : (c) The University of Glasgow, 2007-- License : see libraries/base/LICENSE-- -- Maintainer : cvs-ghc@haskell.org-- Stability : internal-- Portability : non-portable (GHC extensions)---- Support code for desugaring in GHC-- -----------------------------------------------------------------------------
module GHC.Desugar ((>>>), AnnotationWrapper(..), toAnnotationWrapper) where
import Control.Arrow (Arrow(..))
import Control.Category ((.))
import Data.Data (Data)
-- A version of Control.Category.>>> overloaded on Arrow(>>>) :: forall arr. Arrow arr => forall abc. arrab -> arrbc -> arrac-- NB: the type of this function is the "shape" that GHC expects-- in tcInstClassOp. So don't put all the foralls at the front! -- Yes, this is a bit grotesque, but heck it works and the whole-- arrows stuff needs reworking anyway!f>>>g = g.f-- A wrapper data type that lets the typechecker get at the appropriate dictionaries for an annotation
data AnnotationWrapper = forall a. (Data a) => AnnotationWrapperatoAnnotationWrapper :: (Data a) =>a -> AnnotationWrappertoAnnotationWrapperwhat = AnnotationWrapperwhat