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