1. 06 Oct, 2000 6 commits
  2. 05 Oct, 2000 12 commits
  3. 04 Oct, 2000 2 commits
  4. 03 Oct, 2000 9 commits
    • andy's avatar
      [project @ 2000-10-03 18:25:28 by andy] · 75a7e5ff
      andy authored
      Addding the Galois Connections ray tracer as an example for GHC.
      75a7e5ff
    • sewardj's avatar
      [project @ 2000-10-03 16:51:57 by sewardj] · 49ddc1b8
      sewardj authored
      Change representation of Package so it contains the package's name.
      (This makes GHCI a bit more convenient).
      49ddc1b8
    • qrczak's avatar
      [project @ 2000-10-03 14:35:31 by qrczak] · 85339386
      qrczak authored
      Added eqString_RDR to implicitFVs.
      85339386
    • keithw's avatar
      [project @ 2000-10-03 12:47:44 by keithw] · d08dba21
      keithw authored
      Correct some minor typos and a forward reference or two.
      d08dba21
    • rrt's avatar
      [project @ 2000-10-03 10:20:07 by rrt] · f0c9208d
      rrt authored
      Backed out bogon (last commit was completely nonsensical).
      f0c9208d
    • rrt's avatar
      [project @ 2000-10-03 09:56:58 by rrt] · 33dcf8ef
      rrt authored
      Add $(FPTOOLS_TOP)/dll to PATH when running GHC_INPLACE. This is to make the
      inplace compiler pick up the right set of DLLs under Windows, and won't have
      any effect on other platforms (where the dll directory is empty).
      33dcf8ef
    • simonpj's avatar
      [project @ 2000-10-03 09:20:42 by simonpj] · fc8fe3e1
      simonpj authored
      First cut at documenting generic classes
      fc8fe3e1
    • simonpj's avatar
      [project @ 2000-10-03 08:43:00 by simonpj] · 710e2074
      simonpj authored
      --------------------------------------
      	Adding generics		SLPJ Oct 2000
      	--------------------------------------
      
      This big commit adds Hinze/PJ-style generic class definitions, based
      on work by Andrei Serjantov.  For example:
      
        class Bin a where
          toBin   :: a -> [Int]
          fromBin :: [Int] -> (a, [Int])
      
          toBin {| Unit |}    Unit	  = []
          toBin {| a :+: b |} (Inl x)   = 0 : toBin x
          toBin {| a :+: b |} (Inr y)   = 1 : toBin y
          toBin {| a :*: b |} (x :*: y) = toBin x ++ toBin y
      
      
          fromBin {| Unit |}    bs      = (Unit, bs)
          fromBin {| a :+: b |} (0:bs)  = (Inl x, bs')    where (x,bs') = fromBin bs
          fromBin {| a :+: b |} (1:bs)  = (Inr y, bs')    where (y,bs') = fromBin bs
          fromBin {| a :*: b |} bs  	  = (x :*: y, bs'') where (x,bs' ) = fromBin bs
      							  (y,bs'') = fromBin bs'
      
      Now we can say simply
      
        instance Bin a => Bin [a]
      
      and the compiler will derive the appropriate code automatically.
      
      		(About 9k lines of diffs.  Ha!)
      
      
      Generic related things
      ~~~~~~~~~~~~~~~~~~~~~~
      
      * basicTypes/BasicTypes: The EP type (embedding-projection pairs)
      
      * types/TyCon:
      	An extra field in an algebraic tycon (genInfo)
      
      * types/Class, and hsSyn/HsBinds:
      	Each class op (or ClassOpSig) carries information about whether
      	it  	a) has no default method
      		b) has a polymorphic default method
      		c) has a generic default method
      	There's a new data type for this: Class.DefMeth
      
      * types/Generics:
      	A new module containing good chunk of the generic-related code
      	It has a .hi-boot file (alas).
      
      * typecheck/TcInstDcls, typecheck/TcClassDcl:
      	Most of the rest of the generics-related code
      
      * hsSyn/HsTypes:
      	New infix type form to allow types of the form
      		data a :+: b = Inl a | Inr b
      
      * parser/Parser.y, Lex.lhs, rename/ParseIface.y:
      	Deal with the new syntax
      
      * prelude/TysPrim, TysWiredIn:
      	Need to generate generic stuff for the wired-in TyCons
      
      * rename/RnSource RnBinds:
      	A rather gruesome hack to deal with scoping of type variables
      	from a generic patterns.  Details commented in the ClassDecl
      	case of RnSource.rnDecl.
      
      	Of course, there are many minor renamer consequences of the
      	other changes above.
      
      * lib/std/PrelBase.lhs
      	Data type declarations for Unit, :+:, :*:
      
      
      Slightly unrelated housekeeping
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      * hsSyn/HsDecls:
      	ClassDecls now carry the Names for their implied declarations
      	(superclass selectors, tycon, etc) in a list, rather than
      	laid out one by one.  This simplifies code between the parser
      	and the type checker.
      
      * prelude/PrelNames, TysWiredIn:
      	All the RdrNames are now together in PrelNames.
      
      * utils/ListSetOps:
      	Add finite mappings based on equality and association lists (Assoc a b)
      	Move stuff from List.lhs that is related
      710e2074
    • simonpj's avatar
      [project @ 2000-10-03 08:29:30 by simonpj] · af099cc1
      simonpj authored
      Remove dead code mkLookupFun
      af099cc1
  5. 02 Oct, 2000 8 commits
  6. 29 Sep, 2000 3 commits