Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Sep 20, 2006
  1. @mchakravarty
  2. @mchakravarty
  3. @mchakravarty

    Adding FamInstEnv & FamInst modules

    mchakravarty authored
    - They got lost during manual patching, as they are file additions.
  4. @mchakravarty

    Adapt FC-code in TcUnify to pre-subsumption

    mchakravarty authored
    Wed Sep 20 04:01:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Adapt FC-code in TcUnify to pre-subsumption
  5. @mchakravarty

    Some more ASSERTs

    mchakravarty authored
    Wed Sep 20 02:52:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Some more ASSERTs
  6. @mchakravarty

    SPJ's fix to resolve conflict in instFun

    mchakravarty authored
    Wed Sep 20 02:27:26 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * SPJ's fix to resolve conflict in instFun
  7. @mchakravarty

    Adjust code from manual merges

    mchakravarty authored
    Tue Sep 19 14:12:36 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Adjust code from manual merges
  8. @mchakravarty

    Adapt TcFix imports

    mchakravarty authored
    Tue Sep 19 14:11:55 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Adapt TcFix imports
  9. @mchakravarty

    Basic set up for global family instance environment

    mchakravarty authored
    Mon Sep 18 19:52:34 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Basic set up for global family instance environment
      Fri Sep 15 15:20:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Basic set up for global family instance environment
  10. @mchakravarty

    Import/export of data constructors in family instances

    mchakravarty authored
    Mon Sep 18 19:50:42 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Import/export of data constructors in family instances
      Tue Sep 12 13:54:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Import/export of data constructors in family instances
        - Data constructors of a data/newtype family F can be exported and imported
          by writing F(..) or F(ConName).
        - This appears the most natural from a user's persepctive - although, it has a
          slightly different flavour than similar import/exports items for closed data 
          types.  The data constructors denoted by F(..) vary in dependence on the 
          visible data instances.
        - This has been non-trivial to achieve as RnNames derives its knowledge of what
          sub-binders an F(..) item exports/imports from the relation specified by 
          Name.nameParent - ie, the constructors of a data/newtype instance need to 
          have the family name (not the internal name of the representation tycon) as 
          their parent.
        
        *** WARNING: This patched changes the iface format! ***
        ***          Please re-compile from scratch!	    ***
  11. @mchakravarty

    Use smart lookup for tycons

    mchakravarty authored
    Mon Sep 18 19:49:35 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Use smart lookup for tycons
      Tue Sep 12 12:55:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Use smart lookup for tycons
  12. @mchakravarty

    Fix type checking of imported data instances

    mchakravarty authored
    Mon Sep 18 19:48:41 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fix type checking of imported data instances
      Mon Sep 11 20:06:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fix type checking of imported data instances
        - When reading a data/newtype instance from an interface, the data constructors
          have their own universals that do not necessarily match up with their tycon's
          type parameters.  (Whereas when type checking source, they are always the 
          same.)
        - Hence, we need to be careful when building the wrapper signature of imported
          data constructors from data/newtype instances, and rename the type variables
          in the instance types appropriately.
  13. @mchakravarty

    Fix category of representation tycon

    mchakravarty authored
    Mon Sep 18 19:48:00 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fix category of representation tycon
      Mon Sep 11 16:18:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fix category of representation tycon
  14. @mchakravarty

    Option -findexed-types

    mchakravarty authored
    Mon Sep 18 19:42:48 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Option -findexed-types
      Fri Sep  8 21:35:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Option -findexed-types
        - Introduced the switch -findexed-types to activate the indexed type family 
          framework.
        - The switch enables the special 'family' and allows kind signatures (which are
          currently compulsory for associated families).
  15. @mchakravarty

    Get of fam inst index in ifaces

    mchakravarty authored
    Mon Sep 18 19:40:42 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Get of fam inst index in ifaces
      Fri Sep  8 16:31:26 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Get of fam inst index in ifaces
        - Removes the explicit index to get unique names for derived tycons for family
          instances again, following a suggestion by SPJ.
        - We now derive the coercion tycon name from the name of the representation 
          tycon, which is in the iface anyways.
        
        *** WARNING: Change of interface file format! ***
        ***          Recompile from scratch!          ***
  16. @mchakravarty

    Clean up and refactor in SimplUtils.mkCase1 (identity case)

    mchakravarty authored
    Mon Sep 18 19:40:05 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Clean up and refactor in SimplUtils.mkCase1 (identity case)
      Wed Sep  6 07:42:45 EDT 2006  simonpj@microsoft.com
        * Clean up and refactor in SimplUtils.mkCase1 (identity case)
  17. @mchakravarty

    ATs are now implicitTyThings

    mchakravarty authored
    Mon Sep 18 19:36:03 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * ATs are now implicitTyThings
      Tue Sep  5 21:09:54 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * ATs are now implicitTyThings
  18. @mchakravarty

    Straightened out implicit coercions for indexed types

    mchakravarty authored
    Mon Sep 18 19:35:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Straightened out implicit coercions for indexed types
      Mon Sep  4 23:46:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Straightened out implicit coercions for indexed types
        - HscTypes.implicitTyThings and LoadIface.ifaceDeclSubBndrs now
          include the coercion of indexed data/newtypes.
        - Name generation for the internal names of indexed data/newtypes now uses
          the same counter that generates the dfun unique indexes (ie, class and type
          instances are counted with the one counter).  We could make this two 
          separate counters if that's what's preferred.
        - The unique index of a data/newtype instances needs to go into the iface, so
          that we can generate the same names on slurping in the iface as when the
          original module was generated.  This is a bit yucky, but I don't see a way
          to avoid that (other than putting the full blown internal tycon name and 
          coercion name into the iface, which IMHO would be worse).
        - The predicate for when a datacon has a wrapper didn't take GADT
          equations nor whether it comes froma  family instance into account.
        
        *** WARNING!  This patch changed the interface file format. ***
        ***           Please recompile from scratch.                ***
  19. @mchakravarty

    Fixed two bugs concerning fanilies

    mchakravarty authored
    Mon Sep 18 19:34:38 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fixed two bugs concerning fanilies
      Mon Sep  4 20:59:49 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fixed two bugs concerning fanilies
  20. @mchakravarty

    Indexed newtypes

    mchakravarty authored
    Mon Sep 18 19:24:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Indexed newtypes
      Thu Aug 31 22:09:21 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Indexed newtypes
        - This patch makes indexed newtypes work
        - Only lightly tested
        - We need to distinguish between open and closed newtypes in a number of 
          places, because looking through newtypes doesn't work easily for open ones.
  21. @mchakravarty

    Check category of type instances and some newtype family fixes

    mchakravarty authored
    Mon Sep 18 19:23:39 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Check category of type instances and some newtype family fixes
      Thu Aug 31 16:54:14 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Check category of type instances and some newtype family fixes
  22. @mchakravarty

    Better error message for indexes that must be variables

    mchakravarty authored
    Mon Sep 18 19:19:10 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Better error message for indexes that must be variables
      Wed Aug 30 20:21:33 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Better error message for indexes that must be variables
  23. @mchakravarty

    Checking conformance of AT indexes with instance heads

    mchakravarty authored
    Mon Sep 18 19:18:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Checking conformance of AT indexes with instance heads
      Wed Aug 30 20:13:52 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Checking conformance of AT indexes with instance heads
  24. @mchakravarty

    Warn of missing ATs and complain about bad ATs

    mchakravarty authored
    Mon Sep 18 19:17:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Warn of missing ATs and complain about bad ATs
      Mon Aug 28 22:26:22 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Warn of missing ATs and complain about bad ATs
  25. @mchakravarty

    Check that AT instance is in a class

    mchakravarty authored
    Mon Sep 18 19:16:40 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Check that AT instance is in a class
      Sat Aug 26 21:49:56 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Check that AT instance is in a class
  26. @mchakravarty

    Kind sig for toplevel family decls is optional

    mchakravarty authored
    Mon Sep 18 19:13:47 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Kind sig for toplevel family decls is optional
      Sat Aug 26 19:03:50 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Kind sig for toplevel family decls is optional
        - Kind sigs are still compulsory for AT family decls.  Changing this is more 
          tricky, as AT decls don't have the family keyword and hence look like empty 
          data decls.  That impacts reduce/reduce conflicts and/or the criteria for 
          checking whether a TyData variant is a family signature.
        - Also removed iso from the syntax (it's still in the lexer in case we want to
          resurrect it).
  27. @mchakravarty

    Fixed bug in coercion for indexed data types

    mchakravarty authored
    Mon Sep 18 19:12:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fixed bug in coercion for indexed data types
      Fri Aug 25 16:45:29 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fixed bug in coercion for indexed data types
        - Significant examples are starting to work; eg, generic finite maps:
        
        class GMapKey k where
          data GMap k :: * -> *
          empty       :: GMap k v
          lookup      :: k -> GMap k v -> Maybe v
          insert      :: k -> v -> GMap k v -> GMap k v
        
        instance GMapKey Int where
          data GMap Int v        = GMapInt (Map.Map Int v)
          empty                  = GMapInt Map.empty
          lookup k (GMapInt m)   = Map.lookup k m
          insert k v (GMapInt m) = GMapInt (Map.insert k v m)
        
        instance GMapKey Char where
          data GMap Char v        = GMapChar (GMap Int v)
          empty                   = GMapChar empty
          lookup k (GMapChar m)   = lookup (ord k) m
          insert k v (GMapChar m) = GMapChar (insert (ord k) v m)
        
        instance GMapKey () where
          data GMap () v           = GMapUnit (Maybe v)
          empty                    = GMapUnit Nothing
          lookup () (GMapUnit v)   = v
          insert () v (GMapUnit _) = GMapUnit $ Just v
        
        instance (GMapKey a, GMapKey b) => GMapKey (a, b) where
          data GMap (a, b) v            = GMapPair (GMap a (GMap b v))
          empty		                = GMapPair empty
          lookup (a, b) (GMapPair gm)   = lookup a gm >>= lookup b 
          insert (a, b) v (GMapPair gm) = GMapPair $ case lookup a gm of
        				    Nothing  -> insert a (insert b v empty) gm
        				    Just gm2 -> insert a (insert b v gm2  ) gm
        
        instance (GMapKey a, GMapKey b) => GMapKey (Either a b) where
          data GMap (Either a b) v                = GMapEither (GMap a v) (GMap b v)
          empty                                   = GMapEither empty empty
          lookup (Left  a) (GMapEither gm1  _gm2) = lookup a gm1
          lookup (Right b) (GMapEither _gm1 gm2 ) = lookup b gm2
          insert (Left  a) v (GMapEither gm1 gm2) = GMapEither (insert a v gm1) gm2
          insert (Right a) v (GMapEither gm1 gm2) = GMapEither gm1 (insert a v gm2)
  28. @mchakravarty

    Pattern matching of indexed data types

    mchakravarty authored
    Mon Sep 18 19:11:24 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Pattern matching of indexed data types
      Thu Aug 24 14:17:44 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Pattern matching of indexed data types
        - This patch is the last major puzzle piece to type check and desugar indexed 
          data types (both toplevel and associated with a class).
        - However, it needs more testing - esp wrt to accumlating CoPats - and some 
          static sanity checks for data instance declarations are still missing.
        - There are now two detailed notes in MkIds and TcPat on how the worker/wrapper
          and coercion story for indexed data types works.
  29. @mchakravarty

    Introduce coercions for data instance decls

    mchakravarty authored
    Mon Sep 18 19:07:30 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Introduce coercions for data instance decls
      Tue Aug 22 20:33:46 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Introduce coercions for data instance decls
        - data instance declarations implicitly generate a coercion moving between the
          representation type and family instance type.
        - The coercion is *implicitly* generated when type checking both source and 
          ifaces.  Ie, we don't safe it in ifaces - this is really exactly as newtype 
          coercions are handled.
        - The previous addition of the instance types to DataCons has been moved to 
          the representation TyCon.  This is more efficient as it is shared between all
          constructors of one representation tycon and it also gathers everything about
          data instances (family tycon, instance types, and coercion) in one place: the
          algTcParent field of TyCon.
        - The coercion is already used in the datacon wrappers, but not yet during type
          checking pattern matching of indexed data types.
        - The code has only been lightly tested, but doesn't seem to break features not
          related to indexed types.  For indexed data types only the pattern matching
          tc code (in TcPat.tcConPat) and some well-formedness checks are still 
          missing.  And there will surely be some bugs to fix.  (newtypes still require
          some more work.)
        
        	   ** WARNING: Interface file format changed! **
        	   **          Recompile from scratch!        **
  30. @mchakravarty

    Fixed two data family bugs

    mchakravarty authored
    Mon Sep 18 19:06:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fixed two data family bugs
      Mon Aug 21 15:16:16 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fixed two data family bugs
        - Too liberal pattern matching in `tcTyClDecl1'
        - Open TyCons must always be exposed (ie, never be turned into abstract tycons
          during tidying)
  31. @mchakravarty

    Fix the tyvars used for data con signatures

    mchakravarty authored
    Mon Sep 18 19:06:12 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fix the tyvars used for data con signatures
      Sat Aug 19 17:19:25 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fix the tyvars used for data con signatures
  32. @mchakravarty

    Extend TyCons and DataCons to represent data instance decls

    mchakravarty authored
    Mon Sep 18 19:05:18 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Extend TyCons and DataCons to represent data instance decls
      Fri Aug 18 19:11:37 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Extend TyCons and DataCons to represent data instance decls
        - This is a faily involved patch, but it is not entirely complete:
          + The data con wrapper code for instance data cons needs to apply the
            coercions (which we still have to generate).
          + There are still bugs, but it doesn't seem to affect the compilation of
            code that doesn't use type families.
        
        ** WARNING: Yet another change of the iface format.  **
        **          Recompile everything.                    **
  33. @mchakravarty

    Fix TcSplice after some type family related changes

    mchakravarty authored
    Mon Sep 18 19:04:12 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Fix TcSplice after some type family related changes
      Wed Aug 16 19:51:27 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Fix TcSplice after some type family related changes
  34. @mchakravarty

    Make sure ATs are included into the temporary env for tc knot tying

    mchakravarty authored
    Mon Sep 18 19:03:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Make sure ATs are included into the temporary env for tc knot tying
      Wed Aug 16 17:52:40 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Make sure ATs are included into the temporary env for tc knot tying
  35. @mchakravarty

    Extend Class.Class to include the TyCons of ATs

    mchakravarty authored
    Mon Sep 18 18:58:51 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
      * Extend Class.Class to include the TyCons of ATs
      Wed Aug 16 16:15:31 EDT 2006  Manuel M T Chakravarty <chak@cse.unsw.edu.au>
        * Extend Class.Class to include the TyCons of ATs
Something went wrong with that request. Please try again.