識別子で驚かないために
Schemeを触りはじめて、その識別子の構成の自由さにびっくりした。
というか、識別子なのか、何か文法上の特別な記法なのか、パッと見では混乱することがある。
そこで、r5rsを見て、ちょっと整理。
よく分からないのもあるけど。
;;schemeで可能な識別子 ;;! $ % & * + - . / : < = > ? @ ^ _ ~ ;;DrSchemeのR5RSモードでは通る。 ;;Gaucheでは文法エラーになる。 ;;それはキーワード引き数、名前付き引き数に使われる書き方だから? (define :tag "タグっぽい") (display :tag) (newline) ;以下のコメントの区切りまでのパターンは、 ;Gaucheでは|で囲まれて返ってくる。 ;ただ、使う時は|はいらないみたい。 (define +add "これいいの?") (display +add) (newline) (define -subtract "これもいいの?") (display -subtract) (newline) (define @array "これはあんまりよくないらしい") (display @array) (newline) (define .... "・・・・・") (display ....) (newline) (define ... "・・・") (display ...) (newline) (define .. "・・") (display ..) (newline) ;;;ここまで (define a+dd "なにも足さない") (display a+dd) (newline) (define s-ubtract "なにも引かない") (display s-ubtract) (newline) (define array@noarray.com "こっちはいいらしい") (display array@noarray.com) (newline) (define =eq "eq") (display =eq) (newline) (define && "かつ") (display &&) (newline) (define $str1 "Perlっぽく") (display $str1) (newline) (define %hlist "連想配列じゃない") (display %hlist) (newline) (define *Multi "掛け算か?") (display *Multi) (newline) (define /Div "パス名とか割り算とかか?") (display /Div) (newline) (define <FH> "ファイルハンドルと行入力演算子だと思った?") (display <FH>) (newline) (define <^_^?> "何が言いたい?") (display <^_^?>) (newline) (define <@~.~@> "だからなに?") (display <@~.~@>) (newline) (define abc=>def "なにも変えないがな") (display abc=>def) (newline) (define set!? "命名規約は守ろう") (display set!?) (newline) (define $./:<> "なんだこれ") (display $./:<>)
codepadでの出力は
http://codepad.org/BeMXZO01
やっぱ驚く。