I’m confused about how scope works in ulisp, or at least what’s valid or if I’m encountering bugs. Lets say I do
(defvar a 1)
(defvar b 2)
(defun add () (+ a b))
(defun test-add ()
(let ((a 3)
(b 4))
(add)))
(test-add)
Should this output 3, 7, or error?
What about
(defun add () (+ a b))
(defun test-add ()
(let ((a 3)
(b 4))
(add)))
(test-add)
and
(defvar a 1)
(defvar b 2)
(defun test-add ()
(let* ((a 3)
(b 4)
(add (lambda () (+ a b))))
(add)))
(test-add)