13. Implementation
(defmacro with-import((package &rest commands)&body body)
(let((*package*(efind-package package
"WITH-PACKAGE:WITH-IMPORT signaled!~&~
Can not find package ~S."package)))
`(progn ,@(treatment commands body))))
14. Implementation
(defmacro with-use-package((package &key(except nil)(with-internal nil))&body body)
(let((*package*(efind-package package
"WITH-PACKAGE:WITH-USE-PACKAGE signaled!~&~
Can not find package ~S"package)))
`(progn ,@(treatment
(loop for symbol being each external-symbol in package
collect symbol into black-list
finally (return(nconc(ensure-list with-internal)
(set-exclusive-or black-list(ensure-list except) :test #'string=))))
body))))
17. Force shadowing.
●
Already we know about it.
(flet((car(arg)
"Which do you like cl:car or me?"
(declare(ignore arg))
(princ "You chose me! I loveyou!")))
(cl:car '(a b c)))
=> You chose me! I love you!
"You chose me! I love you!"
18. Force Shadowing.
●
Similar FLET
(defun iota(arg)
(declare(ignore arg))
(princ "I am iota."))
(with-use-package(alexandria)
(example::iota 3))
=> (0 1 2)