The last couple of days I’ve been doing a lot of experimenting with a package for function rewriting:
foolbox. I am doing some function transformations in both
tailr and they look very much alike, so I figured I should collect the shared functionality in a separate package. After that, I found a work-around for the need for function rewriting in
pmatch, so it isn’t that necessary any longer, but playing around with
foolbox has been fun and taught me a lot of tricks for metaprogramming that I hadn’t thought about before.
I have written documentation on
foolbox’s homepage so I won’t repeat it here but refer you to
- Transforming functions with
foolbox— general documentation of the package.
- Partial evaluation with foolbox — implementation of partial evaluation using
I am pretty sure that you can implement the function transformations with invariants and pre- and post-conditions. I also think that some static type checking should be possible (for a subset of functions, of course, R is way too dynamic a language to try to handle all cases).
I was thinking of making a release later this week or sometime next week and then return to working on
tailr. I might play around it a bit more first, though. In any case, I would love if anyone else would take it for a spin and help me debug it.