;;; cl-scopes/scratch - interactive testing (asdf:load-system :scopes) (in-package :cl-user) (ext:add-package-local-nickname :scf :scopes/forge) (ext:add-package-local-nickname :sctf :scopes/test-forge) (scopes/test-forge:run) ;;; real scratch area (defun classes () (let ((r nil)) (maphash #'(lambda (k v) (setf r (cons k r))) si:*class-name-hash-table*) (sort r #'(lambda (x y) (string<= (package-name (symbol-package x)) (package-name (symbol-package y))))))) (defun x-make-var (value) #'(lambda (nv) (if (null nv) value (setf value nv)))) (defun x-get-var (vf) (funcall vf nil)) (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))))