Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Why my DEFMACRO fails?

Name: Anonymous 2012-02-27 10:19


(defmacro call/cc (f)
  (let ((l (gensym))
        (r (gensym))
        (v (gensym)))
   `(let ((,r nil))
      (tagbody (setf ,r (funcall ,f (lambda (,v)
                                   (setf ,r ,v)
                                   (go ,l))))
                ,l)
      ,r)))


It works in some cases but fails on (let ((k nil)) (call/cc (lambda (c) (setf k c))) (print 123) (funcall k nil))

How do I fix it?

Name: Anonymous 2012-02-27 10:26

>>1
I tried

(defun call/cc (f)
  (let ((r nil))
    (tagbody (setf r (funcall f (lambda (v)
                                  (setf r v)
                                  (go l))))
             l)
      r))


and it fails too! (call/cc #'call/cc) works, but produces garbage.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List