Ну это какая-то тривиальная операция, по-моему. Она возвращает только t и nil — это предикат какой-то, значит, да? Название q-merge вообще этого не отражает.
Далее, format в примерах это сложность на пустом месте. В Лиспе есть REPL, и писать «вывод результата» руками не нужно. Собсно, тот факт, что это где-то вообще нужно, это некоторое безумие.
Что именно? Почему первый вариант не годится (с явно заданными ключами) - думаю и так понятно. А макрос там намного боее громоздко решает задачу, чем мой вариант.