(butlast half-parsed-remainder (- (length half-parsed-remainder) num-args))))))))
(defun help-arg (arg-type arg)
- (case arg-type
- (:command-block
+ (cond
+ ((eql arg-type :command-block)
(if (not (and (consp arg) (eql 'block (car arg))))
(error "Required a block, but found a ~A" arg)
(cons :command-block (cdr arg))))
- (:reporter-block
+ ((eql arg-type :reporter-block)
(if (not (and (consp arg) (eql 'block (car arg))))
(error "Required a block, but found a ~A" arg)
(cons :reporter-block (cdr arg))))
- (:list
+ ((or (eql arg-type :list) (and (listp arg-type) (find :list arg-type)))
(if (and (consp arg) (eql 'block (car arg)))
(cons :list-literal (cdr arg))
arg))
(defprim :clear-all ())
(defprim :crt (:number))
(defprim :color ())
-(defprim :count ())
+(defprim :count (:agentset))
(defprim :die ())
(defprim :display ())
(defprim :with (:reporter-block))
(defprim :label-color ())
(defprim :not (:boolean))
(defprim :nobody ())
-(defprim :one-of (t))
+(defprim :one-of ((:agentset :list)))
+(defprim :of (:reporter-block :agentset) :infix)
(defprim :patches ())
(defprim :pcolor ())
(defprim :random (:number))
(defprim :tick ())
(defprim :ticks ())
(defprim :turtles ())
+(defprim :who ())
; colors
(defprim :black ())