> That said, I've been told that UHC's core language uses the ideas from
> Strict Core, and they have/had a student at Utretch (Tom Lokhorst) who
> was working on implementing optimisations like arity raising and deep
> unboxing for the language.

Many/most implementations of ML-ish languages use a similar approach.
E.g. SML/NJ's Flint internal language is fairly similar to Strict Core
(except for the lack of memoization of zero-arg functions, since that's
not very often useful in the context of a strict language like SML) and
uses the same kind of wrapper+inlinling to perform most of
its optimizations.

Note that in my experience working on SML/NJ's optimizer (using
wrapper+inlining), such an approach to code transformation doesn't care
about types at all, and indeed most/all of what tacc-hs09.pdf presents
is mostly unrelated to whether the language is typed: e.g. the
uncurrying of the zipWith higher-order argument is performed by the
inliner (when inlining the various wrappers) without paying any
attention to types.  So types do not enable the optimization of
higher-order functions: it's the wrapper+inlining strategy that
enables it.  Admittedly, the use of a statically typed intermediate
language makes it easier to catch bugs in such optimization phases.


        Stefan

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to