Major Feature Upgrade
:key
等) を、
自動的に自分自身に束縛されるシンボルとすることができるようになります。
ただ、この変更は後方互換性を損なうケースがあるため、
0.9.5ではまだデフォルトで有効にはなっていません。
環境変数GAUCHE_KEYWORD_IS_SYMBOL
を設定するとこの機能が有効になります。
詳しくはキーワードを
参照してください。
この機能を有効にして手持ちのコードをチェックすることを推奨します。
ごく近いうちに (次のリリースにでも) この機能をデフォルトで有効にする予定です。
raise
がR7RSの仕様どおりになりました
(Gaucheの組み込みのraiseはSRFI-18準拠で、
R7RSとは少し異なります。)
data.*
という名前で統一されます。
したがって、
util.queue
, util.sparse
, util.trie
はそれぞれ
data.queue, data.sparse,
data.trieに改名されました。
text.unicode
モジュールはgauche.unicodeになりました。
R7RSサポートに不可欠なので。
examples/snake.scm
を試してみてください。
srfi-121
: ジェネレータ - gauche.generatorでカバーされます
srfi-128
: 比較器(簡易版) - この比較器はGauche組み込みとなっており、
他の組み込みのハッシュテーブルやツリーマップ、sort等も
比較器を取れるようになっています。
srfi-131
: ERR5RSレコード構文(簡易版) - gauche.recordのサブセットです
srfi-134
: 変更不可能な両端キュー - data.idequeでカバーされます。
,info
/,doc
トップレベルコマンド) が、該当エントリのみ表示
するようになりました。
GAUCHE_READ_EDIT
が設定されており、端末がサポート可能であれば、
Emacs風のキーバインドで行編集機能が使えます。
この機能は開発のごく初期段階で、まだこなれていません(特に複数行編集にはまだ問題があります)。
勇敢なユーザのみ試してみてください。REPLが爆発しても責任は負えません。
(ed <file-or-procedure>)
。
ソース情報がついている手続きなら、その手続きの定義箇所をエディタで
直接開き、編集した後リロードすることができます。
(read-line)
と打つと、入力待ちになります。
以前はREPLがS式直後の改行を消費しなかったので、(read-line)
と打つと
バッファに残っていた改行が読まれて直ちに空文字列が返されていたのですが、
ユーザを混乱させることが多かったので。
#<undef>
ではなくゼロ個の値を返すようになりました。
package.scm
から読み込むようになりました。
_
を入れて読みやすくできます。
例: #b1101_1000_0001_1101
pi
サフィックスを使えます。
例 2@0.5pi
=> 0.0+2.0i
#<radix>r
数値構文を認識します。例えば
#3r121
は3進数の121
(10進数の16)です。
#?,
が追加されました。
#?,(proc arg ...)
のように使うと、評価前に
(proc arg ...)
の式自身と各引数
arg
の値を表示し、proc
を呼んだ後に返り値を表示します。
#?=
と似ていますが、渡された引数の値を知りたい時に使えます。
また、#?=
はマルチスレッドプログラムでどのスレッドから印字されているか
区別するようになりました。
.sld
サフィックスも探すようになりました。
[::1]:8888
:if-exists
と:append
キーワード引数を追加
(define-syntax define-x (syntax-rules () ((_) (define x #t))))というマクロを定義して、トップレベルで
(define-x)とすると、
x
はリネームされて外から参照できなくなります。
この動作はR7RSでは明示されていませんが、衛生マクロの考え方からすれば一貫しています。
#<module gauche>
ではなく特別なモジュールに
ロードするようになりました。これにより、以前は無視されていたエラーが
表面化する場合があります。詳しくはマニュアルエントリを参照してください。
./
または../
で始まる相対パス名も、includeしているファイルからの
相対パスと解釈されるようになりました。以前はloadの
動作と合わせていたのですが、include
の使われる状況では
あまり有用ではなく混乱するだけだからです。
-fcase-fold
オプションがREPLにも影響するように