~ubuntu-branches/ubuntu/precise/ghc/precise

« back to all changes in this revision

Viewing changes to libraries/base/GHC/Desugar.hs

  • Committer: Bazaar Package Importer
  • Author(s): Joachim Breitner
  • Date: 2011-01-17 12:49:24 UTC
  • Revision ID: james.westby@ubuntu.com-20110117124924-do1pym1jlf5o636m
Tags: upstream-7.0.1
ImportĀ upstreamĀ versionĀ 7.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-----------------------------------------------------------------------------
 
2
-- |
 
3
-- Module      :  GHC.Desugar
 
4
-- Copyright   :  (c) The University of Glasgow, 2007
 
5
-- License     :  see libraries/base/LICENSE
 
6
-- 
 
7
-- Maintainer  :  cvs-ghc@haskell.org
 
8
-- Stability   :  internal
 
9
-- Portability :  non-portable (GHC extensions)
 
10
--
 
11
-- Support code for desugaring in GHC
 
12
-- 
 
13
-----------------------------------------------------------------------------
 
14
 
 
15
-- #hide
 
16
module GHC.Desugar ((>>>), AnnotationWrapper(..), toAnnotationWrapper) where
 
17
 
 
18
import Control.Arrow    (Arrow(..))
 
19
import Control.Category ((.))
 
20
import Data.Data        (Data)
 
21
 
 
22
-- A version of Control.Category.>>> overloaded on Arrow
 
23
#ifndef __HADDOCK__
 
24
(>>>) :: forall arr. Arrow arr => forall a b c. arr a b -> arr b c -> arr a c
 
25
#endif
 
26
-- NB: the type of this function is the "shape" that GHC expects
 
27
--     in tcInstClassOp.  So don't put all the foralls at the front!  
 
28
--     Yes, this is a bit grotesque, but heck it works and the whole
 
29
--     arrows stuff needs reworking anyway!
 
30
f >>> g = g . f
 
31
 
 
32
-- A wrapper data type that lets the typechecker get at the appropriate dictionaries for an annotation
 
33
data AnnotationWrapper = forall a. (Data a) => AnnotationWrapper a
 
34
 
 
35
toAnnotationWrapper :: (Data a) => a -> AnnotationWrapper
 
36
toAnnotationWrapper what = AnnotationWrapper what