Advertisement
Guest User

go go go

a guest
Jul 27th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.71 KB | None | 0 0
  1. CL-USER> (define-symbol-macro %namespace nil)
  2. %NAMESPACE
  3. CL-USER> (defmacro with-namespace (name &body body &environment env)
  4.            `(symbol-macrolet ((%namespace (,name ,@(macroexpand '%namespace env))))
  5.               ,@body))
  6. WITH-NAMESPACE
  7. CL-USER> (defmacro defun-in-namespace (name lambda-list &body body &environment env)
  8.            (let ((actual-name (intern (apply #'concatenate 'string (mapcar #'symbol-name (append (macroexpand '%namespace env) (list name)))))))
  9.              `(defun ,actual-name ,lambda-list ,@body)))
  10. WARNING: redefining COMMON-LISP-USER::DEFUN-IN-NAMESPACE in DEFMACRO
  11. DEFUN-IN-NAMESPACE
  12. CL-USER> (with-namespace foo (with-namespace bar (defun-in-namespace baz ())))
  13. BARFOOBAZ
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement