car とか cdr とか caddar とかの読み方
twitter での会話を勢いで実装してみた。
- 最初の ca は「か」、cd は「くだ」
- その後は a は「あ」、d は「だ」
- 最後の r は「ー」
(defun pronounce (function) (let ((name (coerce (symbol-name function) 'list))) (unless (and (eql (first name) #\c) (eql (car (last name)) #\r)) #1=(error "その関数しらね: ~S" function)) (with-output-to-string (ans) (format ans "~A" (case (second name) (#\a "か") (#\d "くだ") (t #1#))) (dolist (char (nthcdr 2 name)) (format ans "~A" (case char (#\a "あ") (#\d "だ") (#\r "ー") (t #1#))))))) => pronounce (pronounce 'car) => "かー" (pronounce 'cdr) => "くだー" (pronounce 'caddar) => "かだだあー" (pronounce 'caddr) => "かだだー"