The Working R Programmer

Tips and tricks for serious software development in R

Lots of Function Transformations

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 pmatch and 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

I am pretty sure that you can implement the function transformations with invariants and pre- and post-conditions similar to mikefc’s recent tweets:

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 pmatch and 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.