Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CL-USER> (define-symbol-macro %namespace nil)
- %NAMESPACE
- CL-USER> (defmacro with-namespace (name &body body &environment env)
- `(symbol-macrolet ((%namespace (,name ,@(macroexpand '%namespace env))))
- ,@body))
- WITH-NAMESPACE
- CL-USER> (defmacro defun-in-namespace (name lambda-list &body body &environment env)
- (let ((actual-name (intern (apply #'concatenate 'string (mapcar #'symbol-name (append (macroexpand '%namespace env) (list name)))))))
- `(defun ,actual-name ,lambda-list ,@body)))
- WARNING: redefining COMMON-LISP-USER::DEFUN-IN-NAMESPACE in DEFMACRO
- DEFUN-IN-NAMESPACE
- CL-USER> (with-namespace foo (with-namespace bar (defun-in-namespace baz ())))
- BARFOOBAZ
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement