@tekknolagi You probably know this by now, but a quasiquote is string interpolation, but not necessarily for strings. So `(chocolate covered ,item) evaluates, if item is police, to (chocolate covered police). It's just the same thing as pattern matching, just backwards.
As for catamorphisms and the nanopass framework, no idea.