kiyoka.2010_07_05 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2010_07
55555555555555555
5

[Nendo] srfiのポーティング(1)

5

私がRubyで書いているLisp方言、 Nendoについて。

5

 

5

srfi-1のポーティングに挑戦中。

5

Olin Shiversさんのリファレンス実装はsyntax-rulesが使われていないが、call-with-current-continuation(継続)が使われている。

5
 リファレンス実装の情報はこちら: SRFI 1: List LibraryEXT
5
 そして、ソースコードはこちらEXT
5

これを、継続を使わない形式に書きなおしていく予定。

5

継続が使われている理由を推測すると、おそらくmap関数などに長いリストを渡してもスタックオーバーフローしないようにしているのだろう。

5

mapが一つのリストを受けとった場合については、末尾再帰で書くのは簡単だけど、複数のリストを受けとった場合も考慮すると、継続なしで効率の良いコードは書けない気がする。(セルの大量コピーが発生しても良いなら書けるかも)

5

Nendoについては、セルの大量コピー版でいくか...

5

 

5

srfi-1以外についてはNendoはsyntax-rulesが未実装なので、syntax-rulesを先にサポートする必要が有りそう。

5

外の処理系のsyntax-rulesの実装を見てまわっているが、Scheme自身で書かれていたり(chibi-scheme)、Rubyで書かれて言たり(heist)、いろいろだ。(Gaucheは何で書かれているのか読み切れなかった。どこに有るのか見つけられなかった。Gaucheはチューニングの工夫が入りすぎていて、簡単にソースが追えないなあ...)

5

それにしても、Scheme処理系の実装方法の幅は広いなあ。いろいろソースを読むのも楽しい。

5

 

5

...comment disabled...