forge-env: define as class with reader and accessor; testing: put macro definition before first use

This commit is contained in:
Helmut Merz 2024-04-21 14:41:16 +02:00
parent 9bed7704b6
commit 5f491aa901
2 changed files with 10 additions and 12 deletions

View file

@ -8,21 +8,20 @@
(in-package :scopes/forge)
(defun new-forge-env ()
(vector nil))
(defclass forge-env ()
((data-stack :initform 0
:reader data-stack
:accessor data-stack!)))
(defun exec (fe code)
(defun new-forge-env ()
(make-instance 'forge-env))
(defmethod exec ((fe forge-env) code)
(dolist (x code)
(if (symbolp x)
(funcall (find-symbol (symbol-name x) :scopes/forge) fe)
(pushd fe x))))
(defun data-stack (fe)
(elt fe 0))
(defmacro data-stack! (fe)
`(elt ,fe 0))
; forge primitives
(defun add (fe)

View file

@ -11,12 +11,11 @@
(defun test-suite ()
(vector nil))
(defun assert-eq (tst have wanted)
(push (equalp have wanted) (result! tst)))
(defun result (tst)
(elt tst 0))
(defmacro result! (tst)
`(elt ,tst 0))
(defun assert-eq (tst have wanted)
(push (equalp have wanted) (result! tst)))