Macroexpand with letrec
Cache expanded macros