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