1. 23 Oct, 2010 1 commit
  2. 22 Oct, 2010 1 commit
    • simonpj@microsoft.com's avatar
      Add rebindable syntax for if-then-else · 4e0c994e
      simonpj@microsoft.com authored
      There are two main changes
      
       * New LANGUAGE option RebindableSyntax, which implies NoImplicitPrelude
      
       * if-the-else becomes rebindable, with function name "ifThenElse"
         (but case expressions are unaffected)
      
      Thanks to Sam Anklesaria for doing most of the work here
      4e0c994e
  3. 15 Oct, 2010 1 commit
    • Ian Lynagh's avatar
      Add a -fghci-sandbox flag so that we can en/disable the ghci sandbox · bf60bbfb
      Ian Lynagh authored
      It's on by default (which matches the previous behaviour).
      
      Motivation:
      GLUT on OS X needs to run on the main thread. If you
      try to use it from another thread then you just get a
      white rectangle rendered. For this, or anything else
      with such restrictions, you can turn the GHCi sandbox off
      and things will be run in the main thread.
      bf60bbfb
  4. 06 Oct, 2010 2 commits
  5. 07 Oct, 2010 1 commit
    • simonpj@microsoft.com's avatar
      Implement auto-specialisation of imported Ids · 92267aa2
      simonpj@microsoft.com authored
      This big-ish patch arranges that if an Id 'f' is 
        * Type-class overloaded 
             f :: Ord a => [a] -> [a]
        * Defined with an INLINABLE pragma
             {-# INLINABLE f #-}
        * Exported from its defining module 'D'
      
      then in any module 'U' that imports D
      
      1. Any call of 'f' at a fixed type will generate 
         (a) a specialised version of f in U
         (b) a RULE that rewrites unspecialised calls to the
             specialised on
      
        e.g. if the call is (f Int dOrdInt xs) then the 
        specialiser will generate
           $sfInt :: [Int] -> [Int]
           $sfInt = <code for f, imported from D, specialised>
           {-# RULE forall d.  f Int d = $sfInt #-}
      
      2. In addition, you can give an explicit {-# SPECIALISE -#}
         pragma for the imported Id
           {-# SPECIALISE f :: [Bool] -> [Bool] #-}
         This too generates a local specialised definition, 
         and the corresponding RULE 
      
      The new RULES are exported from module 'U', so that any module
      importing U will see the specialised versions of 'f', and will
      not re-specialise them.
      
      There's a flag -fwarn-auto-orphan that warns you if the auto-generated
      RULES are orphan rules. It's not in -Wall, mainly to avoid lots of
      error messages with existing packages.
      
      Main implementation changes
      
       - A new flag on a CoreRule to say if it was auto-generated.
         This is persisted across interface files, so there's a small
         change in interface file format.
      
       - Quite a bit of fiddling with plumbing, to get the 
         {-# SPECIALISE #-} pragmas for imported Ids.  In particular, a
         new field tgc_imp_specs in TcGblEnv, to keep the specialise
         pragmas for imported Ids between the typechecker and the desugarer.
      
       - Some new code (although surprisingly little) in Specialise,
         to deal with calls of imported Ids
      92267aa2
  6. 24 Sep, 2010 1 commit
  7. 23 Sep, 2010 2 commits
  8. 22 Sep, 2010 1 commit
  9. 20 Sep, 2010 1 commit
  10. 19 Sep, 2010 1 commit
    • simonpj@microsoft.com's avatar
      Add a flag -fwarn-missing-local-sigs, and improve -fwarn-mising-signatures · e8fa04cf
      simonpj@microsoft.com authored
      The new flag prints out a warning if you have a local,
      polymorphic binding that lacks a type signature. It's meant
      to help with the transition to the new typechecker, which
      discourages local let-generalisation.
      
      At the same time I moved the missing-signature code to TcHsSyn,
      where it takes place as part of zonking.  That way the 
      types are reported after all typechecking is complete,
      thereby fixing Trac #3696.  (It's even more important for
      local bindings, which is why I made the change.)
      e8fa04cf
  11. 18 Sep, 2010 1 commit
  12. 14 Sep, 2010 1 commit
    • Ian Lynagh's avatar
      Remove (most of) the FiniteMap wrapper · e95ee1f7
      Ian Lynagh authored
      We still have
          insertList, insertListWith, deleteList
      which aren't in Data.Map, and
          foldRightWithKey
      which works around the fold(r)WithKey addition and deprecation.
      e95ee1f7
  13. 13 Sep, 2010 2 commits
  14. 03 Sep, 2010 1 commit
  15. 28 Jul, 2010 1 commit
  16. 10 Sep, 2010 1 commit
  17. 08 Sep, 2010 1 commit
  18. 23 Aug, 2010 1 commit
  19. 22 Aug, 2010 1 commit
  20. 19 Aug, 2010 1 commit
  21. 17 Aug, 2010 1 commit
  22. 16 Aug, 2010 1 commit
    • simonpj@microsoft.com's avatar
      Refactor the command-line argument parsing (again) · 0cb74388
      simonpj@microsoft.com authored
      This change allows the client of CmdLineParser a bit more flexibility,
      by giving him an arbitrary computation (not just a deprecation
      message) for each flag.  
      
      There are several clients, so there are lots of boilerplate changes.
      
      Immediate motivation: if RTS is not profiled, we want to make 
      Template Haskell illegal.  That wasn't with the old setup.
      0cb74388
  23. 13 Aug, 2010 1 commit
  24. 08 Aug, 2010 2 commits
  25. 05 Aug, 2010 1 commit
    • Ian Lynagh's avatar
      Make -rtsopts more flexible · 32073806
      Ian Lynagh authored
      The default is a new "some" state, which allows only known-safe flags
      that we want on by default. Currently this is only "--info".
      32073806
  26. 02 Aug, 2010 1 commit
  27. 24 Jul, 2010 4 commits
  28. 19 Jul, 2010 1 commit
  29. 16 Jul, 2010 1 commit
  30. 07 Jul, 2010 1 commit
  31. 22 Jun, 2010 1 commit
  32. 21 Jun, 2010 1 commit
  33. 18 Jun, 2010 1 commit