Ex1.1: Last Nameを返す

章の途中で定義したlast-nameを改造して、タイトル(っていうんか?)を取り扱えるようにする。
考えられるケースは取り扱えって言っても、どんな慣習があるんでしょう?
取りあえず例題のケースだけに対応。

;;; Exercise 1.1 [m] Define a version of last-name that handles "Rex Morgan MD,"
;;; "Morton Downey, Jr.," and whaterver other cases you can think of.
(defvar *titles* '(MD Jr))
(defun last-name (name)
  "Select the last name from a name represented as a list."
  (do ((l (reverse name) (rest l)))
      ((not (member (first l) *titles*)) (first l))))

(last-name '(Rex Morgan MD))
;; => Morgan
(last-name '(Morton Downey Jr))
;; => Downey