Stop putting function objects in macros. Instead carry a var around.

This means we can now print out our macro and it might read right back!