diff --git a/forge/forge.lisp b/forge/forge.lisp index ff3c50c..48281a0 100644 --- a/forge/forge.lisp +++ b/forge/forge.lisp @@ -148,7 +148,7 @@ #:? #:?? #:ptr #:get #:put #:in #:next - #:call #:call-if #:call-while #:val + #:call #:call-if #:call-while #:comp #:val #:)) (in-package :sf-builtin) @@ -185,7 +185,8 @@ (f:reg 'in #'(lambda () (f:pushd (iter:next-value f:*input*)))) (f:reg 'next #'f:next) -(f:reg 'call #'(lambda () (f:call (popd)))) +(f:reg 'comp #'(lambda () (cons (f:popd) f::*buffer*))) +(f:reg 'call #'(lambda () (f:call (f:popd)))) (f:reg 'call-if #'call-if) (f:reg 'call-while #'call-while) (f:reg 'val #'(lambda () (f:pushd (list #'f:next (f:popd))))) diff --git a/test/test-forge.lisp b/test/test-forge.lisp index f70028c..9555df5 100644 --- a/test/test-forge.lisp +++ b/test/test-forge.lisp @@ -19,12 +19,12 @@ ;(forge:setup-builtins) (test-exec) (test-def) - (test-val))) + (test-val) + (test-if))) (util:lgi (forge:stack forge:*forge-env*)) (t:show-result))) (deftest test-exec () - ;(forge:exec-str "4 2 add") (forge:exec-list '(4 2 add)) (== (forge:popd) 6) (forge:exec-list '( in square reg)) @@ -53,3 +53,6 @@ (== (forge:popd) 42) ) +(deftest test-if () + (forge:exec-list '( in )))