forge: define def in forge code
This commit is contained in:
parent
70bdac68a2
commit
ef7ee0b9f4
2 changed files with 3 additions and 10 deletions
|
@ -111,10 +111,8 @@
|
|||
(comp-item (gethash w (comp-words)))))
|
||||
|
||||
(defun setup-builtins ()
|
||||
|
||||
(reg + (pushd (+ (popd) (popd))))
|
||||
(reg * (pushd (* (popd) (popd))))
|
||||
|
||||
(reg dup (pushd (car (dstack))))
|
||||
(reg swap (let ((a (popd)) (b (popd))) (pushd a) (pushd b)))
|
||||
|
||||
|
@ -127,12 +125,6 @@
|
|||
(register-comp-word 'quote #'do-quote)
|
||||
(register-comp-word 'comp #'do-comp)
|
||||
|
||||
(register-comp-word 'def
|
||||
#'(lambda ()
|
||||
(let* ((name (read-next))
|
||||
(code (comp (read-next))))
|
||||
(register name #'(lambda () (call code))))))
|
||||
|
||||
(activate-package :sf-user))
|
||||
|
||||
;;; compiler, interpreter
|
||||
|
|
|
@ -34,8 +34,9 @@
|
|||
(== (car (forge:dstack)) 6))
|
||||
|
||||
(deftest test-def ()
|
||||
;(forge:exec-str "def square (dup *)")
|
||||
(forge:exec-str "(dup *) quote square reg")
|
||||
(forge:exec-str "(comp quote defer reg) quote def regc")
|
||||
;(forge:exec-str "(dup *) quote square reg")
|
||||
(forge:exec-str "(dup *) def square")
|
||||
(forge:exec-str "7 square")
|
||||
(== (car (forge:dstack)) 49))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue