diff --git a/scratch.lisp b/scratch.lisp index 4cb0781..86736ba 100644 --- a/scratch.lisp +++ b/scratch.lisp @@ -11,6 +11,14 @@ ;;; real scratch area +(defun make-iter () + (let ((pointers (vector nil nil nil))) + #'(lambda (fn) + (funcall fn pointers)))) + +(defun iter-current (it) + (funcall it #'(lambda (p) (car (svref p 0))))) + (defun classes () (let ((r nil)) (maphash #'(lambda (k v) @@ -31,13 +39,3 @@ (defun x-put-var (vf value) (funcall vf value)) -(defun make-var (val) - (let ((var (list val))) - #'(lambda (fn) - (funcall fn var)))) - -(defun get-var (vf) - (funcall vf #'(lambda (x) (car x)))) - -(defun set-var (vf nv) - (funcall vf #'(lambda (x) (setf (car x) nv))))