1 (defun mirror? (s) 2 (let ((len (length s))) 3 (if (evenp len) 4 (do ((start 0 (+ start 1)) 5 (end (- len 1) (- end 1))) 6 ((or (> start end) 7 (not (equal (elt s start) 8 (elt s end)))) 9 (> start end))))))
相对于列表,这个函数对向量来说更有效率,频繁地对列表调用elt的代价是昂贵的,因为列表仅允许循环存取。而向量允许随机存取,从任何元素来存取每一个元素都是廉价的(cheap)。