I find pattern based macro systems harder to read. It's not clear what's syntax/what's a placeholder. Perhaps a prolog approach would work?