- 439 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/18(月) 14:06:21 ]
- ふつーに書けば
(let ((r-h-alist '((a . あ) (i . い) (u . う) (e . え) (o . お) (ka . か) (ki . き) (ku . く) (ke . け) (ko . こ) (sa . さ) (si . し) (su . す) (se . せ) (so . そ)))) (defconst r-h-table (let ((table (make-hash-table :test 'eq))) (dolist (x r-h-alist) (puthash (car x) (cdr x) table)) table)) (defconst r-h-regexp (regexp-opt (mapcar (lambda (x) (symbol-name (car x))) r-h-alist)))) (defun r-h (roma) (let ((start 0) result) (while (string-match r-h-regexp roma start) (if (> (match-beginning 0) start) (push (substring roma start (match-beginning 0)) result)) (setq start (match-end 0)) (push (symbol-name (gethash (intern (match-string 0 roma)) r-h-table)) result)) (push (substring roma start) result) (apply #'concat (nreverse result)))) こんな感じだろ。cond で比較してくなんて小学生か?
|

|