A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
14
Task/Inverted-syntax/Common-Lisp/inverted-syntax-2.lisp
Normal file
14
Task/Inverted-syntax/Common-Lisp/inverted-syntax-2.lisp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
(eval-when (:compile-toplevel :load-toplevel :execute)
|
||||
(defun unrev-syntax (form)
|
||||
(cond
|
||||
((atom form) form) ;; atom: leave alone
|
||||
((null (cdr form)) form) ;; one-element form: leave alone
|
||||
((null (cddr form)) ;; two-element form: swap
|
||||
(destructuring-bind (arg oper) form
|
||||
`(,oper ,(unrev-syntax arg))))
|
||||
(t ;; two or more args: swap last two, add others in reverse
|
||||
(destructuring-bind (arg1 oper &rest args) (reverse form)
|
||||
`(,oper ,(unrev-syntax arg1) ,@(mapcar #'unrev-syntax args)))))))
|
||||
|
||||
(defmacro rprogn (&body forms)
|
||||
`(progn ,@(mapcar #'unrev-syntax forms)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue