Changes between Version 4 and Version 5 of GhcApiAstTraversals


Ignore:
Timestamp:
Aug 15, 2008 11:30:55 AM (7 years ago)
Author:
claus
Comment:

update ticket fixes, linear lookup performance, point to darcs repo

Legend:

Unmodified
Added
Removed
Modified
  • GhcApiAstTraversals

    v4 v5  
    1111Since Ghc does support (standalone) deriving of `Data` and `Typeable`, it seems natural to want those classes instantiated for the Ghc Api types. In case that would lead to blowup of standard releases, it would be even better if those instances could be provided as an add-on to a release.
    1212
    13 - until recently, standalone deriving of `Data/Typeable` was broken (#2378, fixed in HEAD, 07/01/08)
     13- for recent code/documentation, see the syb-utils darcs repo ([http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/syb-utils/changes.xml rss feed of darcs changes]):
     14{{{
     15    darcs get http://www.cs.kent.ac.uk/~cr3/toolbox/haskell/syb-utils
     16}}}
    1417
    15 - standalone deriving of `Typeable` fails if data constructors are not in scope - this looks like a bug (#2433)
     18- until recently, standalone deriving of `Data/Typeable` was broken (#2378, fixed in HEAD, 01.07.08)
     19
     20- standalone deriving of `Typeable` fails if data constructors are not in scope - this looks like a bug (#2433, fixed in HEAD, 04.08.08)
    1621
    1722- standalone deriving of `Data` fails if data constructors are not in scope - this means that `Data` instances are in conflict with the intended data abstraction for some Ghc Ast types!
     
    95100  - there are various more or less obvious ways in which naive use of Syb traversal schemes can lead to very inefficient traversals
    96101  - until proven wrong, I'll assume that all of these traps can be avoided by careful tuning of traversal schemes!-)
    97   - three example issues are listed in [http://www.haskell.org/pipermail/generics/2008-July/000353.html Data.Generics with GPS (using Maps to avoid getting lost in Data)], which also provides a generalisation of the main Uniplate `PlateData` (Uniplate over Syb) optimisation, in a form that can be used to address one of the performance issues of `everywhere` and `everything` (traversal of irrelevant substructures)
    98   - I've been trying to address another of those three issues (too many runtime type checks), but am currently stuck because merely mentioning the necessary auxilary structures seems to disable some GHC optimisation, leading to a drastical loss of performance (as I'm not even using those structures yet, this might be a GHC bug? see #2463)
     102  - three example issues are listed in [http://www.haskell.org/pipermail/generics/2008-July/000353.html Data.Generics with GPS (using Maps to avoid getting lost in Data)], which also provides a generalisation of the main Uniplate `PlateData` (Uniplate over Syb) optimisation, in a form that can be used to address one of the performance issues of `everywhere` and `everything` (traversal of irrelevant substructures) - this gives the expected speedup of naive traversal schemes
     103  - I've been trying to address another of those three issues (too many runtime type checks, specifically linear lookup), but the overhead of working a map of functions of different types means that this isn't really a win (for the typical few specific cases, linear lookup is faster, and as the number of specific cases grows, they tend to be organised so as to reduce type checks and traversals, so having a map is still not necessarily a win)