cl-scopes/forge/sf.lisp

33 lines
604 B
Common Lisp

;;;; 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*))