From 5f491aa9012ccc70d2208694de0b571806996a30 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 21 Apr 2024 14:41:16 +0200 Subject: [PATCH] forge-env: define as class with reader and accessor; testing: put macro definition before first use --- forge/forge.lisp | 17 ++++++++--------- testing.lisp | 5 ++--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/forge/forge.lisp b/forge/forge.lisp index a054b7d..77f41b4 100644 --- a/forge/forge.lisp +++ b/forge/forge.lisp @@ -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) diff --git a/testing.lisp b/testing.lisp index babcc40..d0951da 100644 --- a/testing.lisp +++ b/testing.lisp @@ -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)))