Alright, I give up. I'm still not exactly sure why my implementation is as slow as it is; I have a hunch that I'm taking too long processing the list of actual parameters, but I haven't been able to glean many specifics from statprof. Marc also employs some nifty but un-Scheme-y (to my mind, at least) tricks that give his version an edge, like emitting code that destructively modifies the argument list as part of determining where to insert default values. At any rate, find my version attached. I think it's probably a dead end in terms of going forward, but maybe it's salvageable by a more experienced Schemer? ...Or maybe a more experienced Schemer could make another attempt at doing an implementation from scratch? I don't know what the right course is -- I think it would probably be easy to do something performant in C, but I also grok why that's not the preferred solution. Regards, Julian