gaucheにおける"_"(アンダーバー)って?
コマンド解析についてのソースを探ってた時に、
(define (main args) (let1 predef-syms '() (let-args (cdr args) ((#f "D=s" => (lambda (sym) (push! predef-syms sym))) (else _ (usage)) . args) (match args ((file) (do-it file predef-syms)) (_ (usage))))) 0)
や、
(else (opt . _) (print "Unknown option : " opt) (usage)) . args)
という、記述を見つけた。なにやら手続きっぽい使われ方をしているようだが・・・リファレンスを探ってみても見当たらないし、REPLから実行しても、「そんな変数ないよ」と怒られるし。うーむ。
追記
コメント欄にて
言語的には何も特別な意味は無く、単なる変数です。xでもfooでも構わないんですが、慣習的に「この変数の値は気にしない」という場合に'_'を使っています。
ただし、matchマクロの中では少し特別扱いされます。util.matchのマニュアルページを参照してください。
ということを、教えていただきました。パターンマッチング中のアンダーバーについては、
Gauche Users’ Reference: Top
を参照してみてください。