Shammer's Philosophy

My private adversaria

keyword を intern する

Keyword 引数を intern で返そうとすると、こうやるのかなと思ったが

? (defparameter test "test")
TEST
? (intern (concatenate 'string ":" (symbol-name 'test)))
\:TEST
NIL
?

となってしまい、頭にバックスラッシュがついてしまう。
どうにかこれがつかないようにできないか・・・と思って調べていたが、intern の :keyword を使用することでできそう。: を文字に連結して intern とする必要はない。

? (symbol-name 'test)
"TEST"
? (intern (concatenate 'string ":" (symbol-name 'test)))
\:TEST
NIL
? (intern (concatenate 'string ":" (symbol-name 'test)) :keyword)
:\:TEST
NIL
? (intern (symbol-name 'test) :keyword)
:TEST
:EXTERNAL
?