(defpackage foo
  (:use #:cl)
  (:export #:aif #:it))

(defpackage bar
  (:use #:cl #:foo)
  (:export #:fwrite))

(in-package foo)

(defmacro aif (cond then else)
  `(let ((it ,cond))
     (if it ,then ,else)))

(in-package bar)

(defmacro fwrite (stream x)
  `(aif ,stream (format it "~a" ,x) nil))

(in-package cl-user)

(print (macroexpand '(bar:fwrite t "asd")))