Tue Jun 17 19:13:25 CEST 2008

wandering into confusion

In very general terms, what I want to do is to see if I can do DSP in
a concatenative language with the proper higher order combinators for
list/array processing, and find a way to optimize all combinators away
to produce optimal loop code. That's all really: design a language
that feels high-level and lispy, but is guaranteed to compile to
efficient constructs.

My hunch is that this is actually not so very difficult to do with a
concatenative language. What I don't see is how to perform
instantiation automatically. How to move from high -> low, treating
higher order functions as macros. And, how much am I not just
re-inventing APL.

As far as I read, Wadler's deforestation paper deals with this kind of
higher order macros in section 5. Do I need to understand
deforestation before being able to use these macros? I don't really
need arbitrary intermediate tree data structures: i'm really just
using arrays. Looks like deforestation is necessarily expressed in a
first-order language, and higher order macros are a way to get some of
the effects of higher order functions in a first order language.

Thinking about this, it probably needs automatic instantiation: no
manual macro/forth defs.

Now this:

looks like it is pretty close to what i'm doing. I was wondering about
how to relate C++ templates to purrr composable macros, but looks like
the root of this idea is in the OBJ language.