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 |

2010-07-01

KMRCLを眺める(170) ENSURE-KEYWORD

| 20:47 | KMRCLを眺める(170) ENSURE-KEYWORD - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(170) ENSURE-KEYWORD - わだばLisperになる

今回は、KMRCLのsymbols.lispからENSURE-KEYWORDです。

文字列指示子的なものを与えると、キーワードシンボルを返すというものです。

動作は、

(KL:ENSURE-KEYWORD "foo")
;⇒ :FOO

(KL:ENSURE-KEYWORD 'foo)
;⇒ :FOO

(KL:ENSURE-KEYWORD :foo)
;⇒ :FOO

というところ。

定義は、

(defun ensure-keyword (name)
  "Returns keyword for a name"
  (etypecase name
    (keyword name)
    (string (nth-value 0 (intern (string-default-case name) :keyword)))
    (symbol (nth-value 0 (intern (symbol-name name) :keyword)))))

となっています。

多値の1値目を返すには、(VALUES)を使うのが定番かと思いますが、丁寧にNTH-VALUEで書いているようです。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20100701