talk about loop abuse:
(flet ((make-random-move (rankf)
(loop for place in places
for rank = (funcall rankf place)
collect (cons place rank) into ranks
sum rank into ranks-total
finally (loop with r = (if (zerop ranks-total) -1
(random ranks-total))
for (place . rank) in (shuffle ranks)
sum rank into current-ranks-total
when (< r current-ranks-total)
do (cond ((and (eq place ahead) (move ant)))
((eq place ahead-left)
(turn ant -1))
((eq place ahead-right)
(turn ant +1)))))))
(if (ant-food ant)