Inverted syntax: Difference between revisions
Content added Content deleted
Line 91: | Line 91: | ||
(cond |
(cond |
||
((atom form) form) ;; atom: leave alone |
((atom form) form) ;; atom: leave alone |
||
((null (cdr form)) form) ;; one-element form |
((null (cdr form)) form) ;; one-element form: leave alone |
||
((null (cddr form)) ;; two-element form |
((null (cddr form)) ;; two-element form: swap |
||
(destructuring-bind (arg oper) form |
(destructuring-bind (arg oper) form |
||
`(,oper ,(unrev-syntax arg)))) |
`(,oper ,(unrev-syntax arg)))) |
||
(t |
(t ;; two or more args: swap last two, add others in reverse |
||
(destructuring-bind (arg1 oper &rest args) (reverse form) |
(destructuring-bind (arg1 oper &rest args) (reverse form) |
||
`(,oper ,(unrev-syntax arg1) ,@(mapcar #'unrev-syntax args))))))) |
`(,oper ,(unrev-syntax arg1) ,@(mapcar #'unrev-syntax args))))))) |