LL Future の「 LL で未来を発明する」に参加します
8/30 のLL Futureにて「LL で未来を発明する」セッションにて話します。
私以外のメンバーが
- Larry Wallさん => Perl の生みの親
- まつもとゆきひろさん(ネットワーク応用通信研究所) => Ruby の生みの親
- 住井 英二郎さん => MinCaml コンパイラを書かれた住井先生
と豪華すぎて緊張しますが、言語処理系を作るという立場から面白い話ができればと思っています。
« 2008年07月 | メイン | 2008年10月 »
8/30 のLL Futureにて「LL で未来を発明する」セッションにて話します。
私以外のメンバーが
と豪華すぎて緊張しますが、言語処理系を作るという立場から面白い話ができればと思っています。
Mosh 0.0.6 をリリースしました。
R6RS のエラーシステムの多くが実装され、より柔軟にエラー処理が書けるようになりました。
例えば (car 3) のようにエラーが発生しそうな場合、guard で囲むことにより
(import (rnrs))(guard
[con
[(message-condition? con)
(display (condition-message con))]]
(car 3))
例外をキャッチすることができます。
また guard で囲まない場合はデフォルトの例外ハンドラにより以下のようなエラーが表示されます。
Exception:
Unhandled exceptionCondition components:
1. &assertion
2. &who: car3. &message: "pair required"
4. &irritants: (3)
また本リリースでR6RSが要求する Hashtables、Conditions、Enumerations、List utilities 多くの機能が実装されました。
追加、変更点の詳細は以下の通りです。
「R6RS モード(-b オプション)」の起動が大幅に速くなりました。
ハッシュテーブルを利用するための手続きがすべて実装されました。
使用例
(import (rnrs))(let ([hashtable (make-eq-hashtable)])
(hashtable-set! hashtable 'red 'apple)
(display (hashtable-ref hashtable 'red)));; => apple
R6RS Hastables では equivalence function と hash function を自分で定義し独自のハッシュテーブルを作成することもできます。
詳細な仕様はR6RS 13.Hashtablesをご覧ください。
以下のように構造体を利用することができます。
(import (rnrs))(define-record-type (point make-point point?)
(fields (mutable x)(immutable y)))
(let ([p (make-point 3 4)])
(display (point-x p))) ; => 3
構造体は継承をすることもできます。詳細な使い方は6.Recordsをご覧ください。
例外とコンディションの仕組みが実装されました。
これにより
といったことが安全に行えるようになりました。
詳細な使い方は7.Exceptions and conditionsをご覧下さい。
今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。
みなさんありがとうございました。
不具合報告までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。