Viivi kernel の拡張機能
- 文字データを JVM の内部 Unicode で処理することにより複数の自然言語に並列的に対応可能です.
使用しているロケールの言語の文字がシンボルや文字列の中で使えます.
状態やエラー/注意を示すメッセージ言語は使用しているロケールの言語から自動的に決定されます.
(たとえば日本語ロケールの場合,
ひらがな,カタカナ,漢字などをシンボルや文字列の中で使用でき,
メッセージは日本語で表示されます.)
Viivi は原理的には
JVM の Unicode がサポートするすべての言語に対応することが可能です.
メッセージ言語としてサポートされる言語の種類がいくら増えても
メモリの消費量は増加しません.
(現在は日本語と英語だけがメッセージ言語として使えます.
対応言語は今後増やしていきます.)
-
評価過程 (継続さえも!) を可視化する独自のデバッグトレースシステム
(のちに VITSE へと改良されました)
を装備しています
((旧)トップページの背景画像 は
デバッグトレース出力の一例のスクリーンスナップショットです).
-
入出力ポートとしてファイルだけでなくネットワークポートも使えます.
ネットワークポートも見かけ上は通常のファイルと同様に扱うことができ,
ソケットなど内部の構造を意識せずに使うことが可能です.
- 設定ファイル
viivi.vcnf
と
.viivirc
,
および引数コマンドにより立ち上げ時の評価環境を柔軟にカスタマイズできます.
実行中でも手続き
viivi-set!
を用いて同様のカスタマイズが行えます.
- コマンドライン上に複数の逐次入力元・逐次出力先を指定できます.
- 世の中に広く存在する慣習的な Scheme コード
(引数1個の
eval
呼び出し,
引数なしの継続呼び出し,
define
/
set!
が新たな束縛値を返す,など)
に対応するようにカスタマイズすることができます.
- マクロのパターン内において,
リストまたはベクトル内に複数の省略子「...」が直列に現れる場合,
最長一致の原理に従ってパターン一致の検査を行います.
- 転写出力はそのままインタプリタへの入力として使用可能な形式で書き出します.
これにより,後で,あるいは別のネットワークホスト上で,同じ評価を再現することが可能です.
- 「ベースレベル」を導入し,
R5RSで分類された定義済みオブジェクト (syntax や procedure など) のグループを
自由に組み合わせた評価環境を生成できます.
さらにベースレベル上では定義済みのオブジェクトを個別に追加・削除することができます.
これは主に R5RS のサブセット環境を作り出して
実験する目的を想定して実装した機能です.
- 循環リストの長さは実質要素の個数の負値とします.
(たとえば
#0=(10 20 30 . #0)
の長さは
-3
です.)
- エラーが起きたときには詳細なエラー情報を表示します.
問題を起こすおそれがある場合
(定義済み手続きに束縛されていたシンボルが別の値に再束縛された場合や,
正しいリストを引数に取る手続きに循環リストが引数として与えられた場合など)
には注意を表示します.
ご連絡方法
2010/10/24 開設
2022/03/02 更新
Copyright(C) 2003-2022 ilma <ilma@viivi.io> All rights reserved.