RosettaCodeData/Task/Inverted-syntax/Common-Lisp/inverted-syntax-1.lisp
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

10 lines
345 B
Common Lisp

(eval-when (:compile-toplevel :load-toplevel :execute)
(defun unrev-syntax (form)
(cond
((atom form) form)
((null (cddr form)) form)
(t (destructuring-bind (oper &rest args) (reverse form)
`(,oper ,@(mapcar #'unrev-syntax args)))))))
(defmacro rprogn (&body forms)
`(progn ,@(mapcar #'unrev-syntax forms)))