":" (キーワード)

http://openspace.timedia.co.jp/~nyama/wiliki/ghg.cgi?p=gauche.h%3AKeyword&c=e

  • Common Lispでは、':' で始まるシンボルは常に自分自身を値とする特別なシンボル で、「キーワード」と呼ばれます。Gaucheでは、キーワードはシンボルとは異なるオブジェクトで、主としてキーワード引数を実現するために使っています。R5RSに出てくるメタ変数としてのkeywordとは異なります。独立したキーワードオブジェクトを持つSchemeとしては、stklos、Guile、それからDSSSL XSLTの元祖みたいなやつ) 等があります。表記は微妙に異なっていて、stklosは '':keyword''、Guileは ''#:keyword''、DSSSLでは ''keyword:'' です。パッケージの問題があるCommon Lispと違って、Schemeではキーワードを持つべき本質的な理由というのは実はありません。キーワード引数はクオートしたシンボルで実現できます。メリットは単にコード上で若干見やすいというくらいですね。


http://flex.ee.uec.ac.jp/texi/canlisp/node28.html

  • キーワードパッケージシンボルを評価するとそのシンボル自身になる。
  :user 評価→   :user
  :abcd 評価→   :abcd

gaucheでは":"も使えたが、scheme一般では"'"でいいらしい。