Nendo 0.3.3 リリース
[Nendo] 0.3.3をリリースしました。(リリースノート: [Nendo.ReleaseNote])
あいかわらずチュートリアルと、リファレンスマニュアルはまだ書きかけですが…
[Nendo.Tutorial]
[Nendo.ReferenceManual]
今回の目玉はsrfi-1のサポートと末尾再帰最適化でしょう。 SRFI 1: リスト ライブラリはScheme単体では貧弱なリスト処理ユーティリティを増強するものです。 Scheme処理系のほとんどは、このライブラリをサポートしており、これが無いとそもそも処理系を使ってもらえないほどの必須ライブラリと言えます。
末尾再帰最適化は、再帰的に記述したコードのスタックオーバーフローを軽減する機能でR5RS Schemeでは必須とされている機能です。それが[Nendo]にも入りました。 例えば、以下のコードはスタックオーバーフローせず無限ループします。
(define (foo)
(foo))
今後はR5RSのdefine-syntax define-rules等の健全なマクロを実装して、より多くのSRFIライブラリをサポートしていく予定です。 [Nendo]は独自仕様のLisp処理系を作ろうとして開発を始めましたが、Scheme(R5RSですが)を参考にすればするほどSchemeはシンプルにまとまった良い仕様だということが分かってきて、現在はSchemeにどんどん近づいていっています。 将来的にはRuby gemsを簡単に利用できるSchemeライクな言語という位置付けになりそうです。
普段の利用シーンとして、ハイパフォーマンスなプログラムを作りたい場合は[Gauche]を、Ruby gemsで見つけたライブラリを使って手早くツールを書きたい場合は[Nendo]を使うという風に、二つの処理系をスイッチしてもあまりストレスが無いようにできればいいなあと思っています。