add and macro and fix code to support `(1 2 ,@()) should be (1 2)