Sun Aug 14 13:48:40 CEST 2011


Now that tools are accessible, where do I need to go next?

The main point is about "manually guided partial evaluation", which
means that from specification -> implementation the following should

  - expensive run-time binding removed, i.e.:

    * don't implement higher order functions (that abstract iteration
      / mapping) as function calls, but specialize them to the
      function(s) they are applied to.

    * manage duplication, i.e. unrolling to expose software

  - put the code into a form that allows lower level compiler
    (i.e. LLVM) to optimize it further.

    * pick a serialization for an inherently multi-dimensional
      problem.  tune this to the memory hierarchy.

Since the Symantics approach is now +- clear to me, it might be better
to leave it alone for a while and work directly on top of the
LLVM.Util.Arithmetic abstractions.  It looks like these LLVM bindings
are a good way to learn more Haskell by reading code.