Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2009-12-17

KMRCLを眺める (41) REMOVE-KEYWORDS

| 21:33 | KMRCLを眺める (41) REMOVE-KEYWORDS - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める (41) REMOVE-KEYWORDS - わだばLisperになる

今回は、KMRCLのlists.lisp中からREMOVE-KEYWORDSです。

昨日は、REMOVE-KEYWORDで削除するキーも1種類でしたが、今回は、REMOVE-KEYWORDSということで、削除するキーのリストを取るようです。

(REMOVE-KEYWORDS '(:RE :MO :VE :ME) 
                 '(:RE 1 :MO 2 :VE 3 :ME 4 :FOO 5 :BAR 6))
;⇒ (:FOO 5 :BAR 6)

実装は

(defun remove-keywords (key-names args)
  (loop for ( name val ) on args by #'cddr
        unless (member (symbol-name name) key-names
                       :key #'symbol-name :test 'equal)
        append (list name val)))

というものですが、前回のREMOVE-KEYWORDの謎なコーディングより普通な書き方をしているようです。

関数名はキーワードとなっていますが、シンボルならなんでも良いわけですね。