

:foo という、キーワードを作りたいのですが、

[code]

    (intern ":FOO")
    
[/code]

としても、|:FOO|というシンボルができるようです。 どうすれば、:fooが作れますか。


CC BY-SA 3.0
2014-12-16T08:56:03.107
1722
2014-12-16T09:30:33.387
2014-12-16T09:30:33.387
3124
3510
question
common-lisp
文字列からキーワードを作りたい


internで keywordパッケージにインターンしてください。

[code]

    (intern "FOO" :keyword)
    ;=> :FOO
    
[/code]

':fooのようなシンボルはkeywordパッケージのシンボルの略記で、'keyword:fooの略記ともみなせますので、keywordパッケージにインターンすることによって作成します。

[code]

    (intern ":FOO")
    
[/code]

としても現在のパッケージの下に、|:FOO|というシンボルが作成されるだけになります。


CC BY-SA 3.0
2014-12-16T08:57:06.137
1723
2014-12-16T08:57:06.137
3510
1722
answer


ユーティリティライブラリの「[Alexandria](http://common-lisp.net/project/alexandria/)」に`make-
keyword`という関数があります。

[code]

    (alexandria:make-keyword "FOO")
    ;=> :FOO
    ;   :EXTERNAL
    
[/code]


CC BY-SA 3.0
2014-12-16T09:28:52.163
1727
2014-12-16T09:28:52.163
3124
1722
answer