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-11-10

KMRCLを眺める (10) awhen2

| 01:04 | KMRCLを眺める (10) awhen2 - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める (10) awhen2 - わだばLisperになる

今日は、KMRCLのmacros.lispの中からAWHEN2です。

これもAIF2と同じくEXPORTされてないようなので、使う時にはEXPORTしましょう。

名前を見て分かるように、AIF2のWHEN版です。

AIF2より使いどころがなさそう。使用例もいまいち思い付きません…。

(LET ((HT (MAKE-HASH-TABLE)))
  (SYMBOL-MACROLET ((HT-FOO (GETHASH :FOO HT)))
    (SETF HT-FOO NIL)
    
    (AWHEN2 HT-FOO
      (SETF HT-FOO (LIST 42 IT))

    HT-FOO))
;⇒ (42 NIL)
;   T

定義は前回のAIF2を下敷きにしています。

(defmacro awhen2 (test &body body)
  `(aif2 ,test
         (progn ,@body)))