Fri Sep 11 12:30:28 CEST 2009
Algebra of Programs
Let's focus on the basic idea: a create a collection of combinators
that satisfy some mathematical laws. Make it almost trivial: no power
in the language, easy manipulation. Play with the manipulation and
try to grow some context to understand current literature about this.
The basic one is the interaction between `map' and fuction compositon.
(f) map (g) map = (f g) map
Now, construct a bunch of meaningful programs that use just this, and
then construct all possible rewritings.
Then, try to associate a _cost_ and _feasibility_ to the different
versions, i.e. register pressure, cache pressure, ...