experiments with closure-based variables

This commit is contained in:
Helmut Merz 2024-04-27 19:55:27 +02:00
parent c2b48289ab
commit 6e40672f10

View file

@ -18,3 +18,26 @@
(sort r #'(lambda (x y)
(string<= (package-name (symbol-package x))
(package-name (symbol-package y)))))))
(defun x-make-var (value)
#'(lambda (&optional (nv nil))
(if (eq nv nil)
value
(setf value nv))))
(defun x-get-var (vf)
(funcall vf))
(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))))