diff --git a/forge/forge.lisp b/forge/forge.lisp index 03a7e59..51db2ab 100644 --- a/forge/forge.lisp +++ b/forge/forge.lisp @@ -4,36 +4,33 @@ (defpackage :scopes/forge (:use :common-lisp) - (:export #:hello #:new-forge-env #:data-stack #:exec + (:export #:new-forge-env #:data-stack #:exec #:add)) (in-package :scopes/forge) (defun new-forge-env () - nil) + (vector nil)) -(defun exec (fe &rest code) - code - fe) +(defun exec (fe code) + (dolist (x code) + (if (numberp x) + (pushd fe x) + (funcall x fe)))) (defun data-stack (fe) - fe) + (elt fe 0)) ; forge primitives (defun add (fe) - (pushd (+ (popd fe) (popd fe)) fe )) - -; dummy exampled, to be removed - -(defun hello () - (format t "Hello Common Lisp - 2024-04-19")) + (pushd fe (+ (popd fe) (popd fe)))) ; internal definitions (defun popd (fe) - (pop fe)) + (pop (elt fe 0))) (defun pushd (fe v) - (push v fe)) + (push v (elt fe 0))) diff --git a/test/test-forge.lisp b/test/test-forge.lisp index 793c329..b8244a6 100644 --- a/test/test-forge.lisp +++ b/test/test-forge.lisp @@ -11,11 +11,10 @@ (in-package :scopes/test-forge) (defun run () - (scf:hello) (let ((fe (scf:new-forge-env)) (tst (sct:test-suite))) (scf:exec fe '(4 2 scf:add)) (sct:assert-eql tst (car (scf:data-stack fe)) 6) - (format t "~%tst ~a" tst) + ;;(format t "~%fe ~a" fe) (sct:result tst) ))