;;;; cl-scopes/forge - may the forge be with you! ;;;; A Forth-like interpreter implemented in Common Lisp. (defpackage :scopes/forge/sf (:use :common-lisp) (:local-nicknames (:iter :scopes/util/iter)) (:export #:*stack* #:add #:pushd #:popd)) (defpackage :sf-builtin) (defpackage :sf-user) (in-package :scopes/forge/sf) (defvar *stack* nil) ;;;; builtins (defun reg2 (sym fn) (setf (fdefinition sym) #'(lambda () (pushd (funcall fn (popd) (popd)))))) (reg2 'add #'+) ;;;; core definitions (defun pushd (v) (push v *stack*)) (defun popd () (pop *stack*))