- (let
- ((iter (shufflerator (agent-set-list agent-set))))
- (loop
- :for agent := (funcall iter)
- :while agent
- :collect (let ((*myself* *self*) (*self* agent)) (funcall fn)))))
+ (cond
+ ((agent-set-p agent-or-agent-set)
+ (let
+ ((iter (shufflerator (agent-set-list agent-or-agent-set))))
+ (loop
+ :for agent := (funcall iter)
+ :while agent
+ :collect (let ((*myself* *self*) (*self* agent)) (funcall fn)))))
+ ((agent-p agent-or-agent-set)
+ (let ((*myself* *self*) (*self* agent-or-agent-set)) (funcall fn)))
+ (t
+ (error "Of requires an agent-set or agent but got: ~A" agent-or-agent-set))))