[Openmcl-devel] with-package
Taoufik Dachraoui
dachraoui.taoufik at gmail.com
Sat Jan 12 17:51:41 PST 2013
replace with-package by the following:
(defmacro with-package ((&rest names) &body body)
(let ((r (gensym)) (e (gensym)))
`(progn
(use , at names)
(multiple-value-bind (,r ,e)
(ignore-errors
(multiple-value-list
(eval (read-from-string
(format nil "(progn ~{~S ~})"
(let ((*readtable* (copy-readtable)))
(set-macro-character #\(
(lambda (stream char)
(declare (ignore
char))
(set-macro-character
#\" nil)
(let ((str "") (n 0)
(within-string nil) (pc nil))
(do ((c (read-char
stream t nil t) (read-char stream t nil t)))
((and (= n 0)
(eq c #\))))
(if (not
within-string)
(if (eq c #\()
(incf n)
(if (eq c
#\))
(decf
n))))
(if (and (not (eq
pc #\\)) (eq c #\"))
(progn
(setf
within-string (not within-string))
(setf str
(format nil "~A\"" str)))
(setf str
(format nil "~A~A" str c)))
(setf pc c))
str)))
',body))))))
(unuse ,@(reverse names))
(if (null ,e)
(values-list ,r)
(error (format nil "~S" ,e)))))))
? (with-package (calculus) (print "-:(") (print "success\"full"))
"-:("
"success\"full"
"success\"full"
?
-
Regards
Taoufik
On Sat, Jan 12, 2013 at 11:59 PM, Pascal J. Bourguignon <
pjb at informatimago.com> wrote:
> Taoufik Dachraoui <dachraoui.taoufik at gmail.com> writes:
>
> > I managed to write a correct version of with-package macro, this is
> > due to the valuable hints and discussions, I learned a lot by being a
> > member of ccl thank you a lot for all your helps
> >
> > here is the whole code of the mb simple file system (some bugs may be
> > found sorry i did not test thoroughly)
> >
> > Now I would like to see why this design is wrong by showing me
> > examples where the system can fail
>
>
> cl-user> (mb:with-package (MB)
> (print ":-(")
> (print "fails badly"))
>
> > Debug: #<end-of-file #x302001D88FAD>
>
>
> --
> __Pascal Bourguignon__ http://www.informatimago.com/
> A bad day in () is better than a good day in {}.
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20130113/06badd71/attachment.htm>
More information about the Openmcl-devel
mailing list