There's also PreScheme, used to implement Scheme48's VM, whose compiler is written in Scheme. It seems that PreScheme differs by providing macros in the PreScheme language rather than requiring the user to write `transformations' in the compiler language (Common Lisp in the case of SC).