-%
+
% (c) The University of Glasgow 2006
% (c) The GRASP Project, Glasgow University, 1992-2002
%
-- (Ids defined in this module start in the local envt,
-- though they move to the global envt during zonking)
- tcg_type_env_var :: TcRef TypeEnv,
+ tcg_type_env_var :: TcRef TypeEnv,
-- Used only to initialise the interface-file
-- typechecker in initIfaceTcRn, so that it can see stuff
-- bound in this module when dealing with hi-boot recursions
-- Incremented when going inside a bracket,
-- decremented when going inside a splice
-- NB: ThLevel is one greater than the 'n' in Fig 2 of the
- -- original "Template meta-programmign for Haskell" paper
+ -- original "Template meta-programming for Haskell" paper
impLevel, topLevel :: ThLevel
topLevel = 1 -- Things defined at top level of this module
-- Includes coercion variables
-- mentioned in tci_reft
tci_reft :: Refinement,
- tci_given :: [Inst], -- Only Dicts
+ tci_given :: [Inst], -- Only Dicts and EqInsts
-- (no Methods, LitInsts, ImplicInsts)
tci_wanted :: [Inst], -- Only Dicts and ImplicInsts
-- (no Methods or LitInsts)
| EqInst { -- delayed unification of the form
-- co :: ty1 ~ ty2
- tci_left :: TcType, -- ty1
- tci_right :: TcType, -- ty2
+ tci_left :: TcType, -- ty1 -- both types are...
+ tci_right :: TcType, -- ty2 -- ...free of boxes
tci_co :: Either -- co
- TcTyVar -- a wanted equation, with a hole, to be
- -- filled with a witness for the equality
- -- for equation generated by the
- -- unifier, 'ty1' is the actual and
- -- 'ty2' the expected type
- Coercion, -- a given equation, with a coercion
- -- witnessing the equality
- -- a coercion that originates from a
- -- signature or a GADT is a CoVar, but
- -- after normalisation of coercions,
- -- they can be arbitrary Coercions
- -- involving constructors and
- -- pseudo-constructors like sym and
- -- trans.
+ TcTyVar -- - a wanted equation, with a hole, to be
+ -- filled with a witness for the equality;
+ -- for equation arising from deferring
+ -- unification, 'ty1' is the actual and
+ -- 'ty2' the expected type
+ Coercion, -- - a given equation, with a coercion
+ -- witnessing the equality;
+ -- a coercion that originates from a
+ -- signature or a GADT is a CoVar, but
+ -- after normalisation of coercions, they
+ -- can be arbitrary Coercions involving
+ -- constructors and pseudo-constructors
+ -- like sym and trans.
tci_loc :: InstLoc,
tci_name :: Name -- Debugging help only: this makes it easier to