Lars Brinkhoff
2012-09-25 06:44:28 UTC
Nestade backquoteuttryck är roliga. Jag har nog aldrig haft anledning
att skriva ,@', förut.
(defun map-flet-subforms (bindings body)
(flet ((map-lambda-list (lambda-list)
(mapcar (lambda (arg)
(destructuring-case arg
((x y . z) ``(,',x ,(%map ,y) ,@',z))
(x `',x)))
lambda-list)))
``(flet (,,@(mapcar
(lambda (binding)
(destructuring-bind (name lambda-list . body) binding
``(,',name (,,@(map-lambda-list lambda-list))
,,@(mapcar (lambda (x) `(%map ,x)) body))))
bindings))
,,@(mapcar (lambda (x) `(%map ,x)) body))))
att skriva ,@', förut.
(defun map-flet-subforms (bindings body)
(flet ((map-lambda-list (lambda-list)
(mapcar (lambda (arg)
(destructuring-case arg
((x y . z) ``(,',x ,(%map ,y) ,@',z))
(x `',x)))
lambda-list)))
``(flet (,,@(mapcar
(lambda (binding)
(destructuring-bind (name lambda-list . body) binding
``(,',name (,,@(map-lambda-list lambda-list))
,,@(mapcar (lambda (x) `(%map ,x)) body))))
bindings))
,,@(mapcar (lambda (x) `(%map ,x)) body))))