Wolf sheep works in tests
[clnl] / src / main / transpile.lisp
index b1406533bbe5dc214c79dad724752382e74e325a..956b226eaea577f61fb3de51b4ac0417e8761a4d 100644 (file)
@@ -188,7 +188,7 @@ DESCRIPTION:
 (defagentvalueprim :color)
 (defsimpleprim '(:clear-all :ca) :command clnl-nvm:clear-all)
 (defsimpleprim :count :reporter clnl-nvm:count)
-(defsimpleprim :crt :command clnl-nvm:create-turtles)
+(defprim '(:crt :create-turtles) :command (lambda (num &optional fn) `(clnl-nvm:create-turtles ,num nil ,fn)))
 (defsimpleprim :die :command clnl-nvm:die)
 (defsimpleprim :display :command clnl-nvm:display)
 (defsimpleprim :fd :command clnl-nvm:forward)
@@ -196,9 +196,12 @@ DESCRIPTION:
 (defprim :if :command (lambda (pred a) `(when ,pred ,@(make-command-block-inline a))))
 (defprim '(:ifelse :if-else)
  :command (lambda (pred a b)
-           `(if ,pred
-             ,@(make-command-block-inline a)
-             ,@(make-command-block-inline b))))
+           (let
+            ((then (make-command-block-inline a))
+             (else (make-command-block-inline b)))
+            `(if ,pred
+              ,@(if (= (length then) 1) then `((progn ,@then)))
+              ,@(if (= (length else) 1) else `((progn ,@else)))))))
 
 (defagentvalueprim :label)
 (defagentvalueprim :label-color)