Noel Welsh wrote at 09/02/2010 04:49 AM:
GHC allows user specified rewrite rules:

http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/rewrite-rules.html

I don't know how effective they are in practice.

Neat. But I'd be fine with just a hook procedure being called with with just the version identifier and whatever intermediate representation the compiler happens to have in that version (say, a macro-expanded syntax tree with reference annotations). Beyond that point, the IR is simply undocumented internals that can be poked around, with no special transformation language required. An optimization programmer can apply whatever pattern-matching or whatnot they want to help with the transformation/manipulation.

Independently, a third-party PLaneT package author could try to provide a higher-level library for use by hook optimization programmers, that abstracts across different versions of a Racket hook phase IR. Perhaps it would look much like these GHC rewrite rules, "syntax-case", or one of the various Scheme pattern-matching and logic-programming libraries.

I am currently thinking of these pluggable optimizations as potentially unsafe indulgences for high-performance computing and research prototyping. However, I have a greater interest in this not significantly impeding the other evolution of Racket (by, e.g., distracting Matthew or making compiler improvements more difficult). But if anyone who does the work has other priorities or other ideas, that's good.

--
http://www.neilvandyke.org/

_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/users

Reply via email to