コロン
「:」をdefineしようとすると以下のエラーになる
gosh> (define : cons) *** ERROR: Compile Error: syntax-error: (define : cons)
R5RSには以下のように書いてある。
拡張アルファベット文字は、識別子の中で文字のように使用することができる。拡張アルファベット文字は次のものである。
! $ % & * + - . / : < = > ? @ ^ _ ~http://www.sci.u-toyama.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html#SEC16
それなのに、Gaucheで「:」がシンボルに使えないのはキーワードを作るリーダーマクロになっているからか?
Gauche ユーザリファレンス: 6.6 キーワード
http://practical-scheme.net/gauche/man/gauche-refj_44.html
Reader syntax: :name
名前が name であるキーワードとして読み込まれます。 (先行する ':' は、キーワードの名前の一部ではないことに注意してください。)
確かに「:」はキーワードだ。無理に関数呼び出ししようとしたときのエラーも違う。
gosh> (symbol? ':) #f gosh> (keyword? ':) #t gosh> (: 1 2) *** ERROR: invalid application: (: 1 2) gosh> (f 1 2) *** ERROR: unbound variable: f