Re: Schemeの好きなところと嫌いなところ

その2 メソッド探索機能がない

Schemeクロージャって簡単なオブジェクトとして使えるんですが、手続きのディスパッチは全部自分で手で書かなきゃならない。そんなことは普通は処理系の仕事だろう、と。

ただこれは素のSchemeの話で、実際にはScheme処理系にはたいてい何らかのオブジェクトシステムが載っています。Scheme用のオブジェクトシステムとしてはSTkのSTklosが有名だし、Gaucheにもあらかじめオブジェクトシステムが組み込まれていたりします。

その3 forループがない

個人的には再帰は好きなんですが、繰り返しの手段が再帰だけというのはやりすぎだと思います。木などの再帰的な構造を処理するならいいんですが、単純なループをわざわざ再帰で書くのはわずらわしい(「名前付きletをloop構文だと思いこむ」という技はありますけど)。再帰はおつむリソースを余分に消費するので、その分のリソースは別のロジックを考えるのに使ったほうがいんじゃないかと思ったり。

え、do構文? そ、それわ…

Schemeの好きなところと嫌いなところ - ヤドカリデンキ商会(ブログ版)

好きなところ

「メソッド探索機能がない」「forループがない」→「無いなら(マクロで)作ればいいじゃない」ができるのがS式言語

嫌いなところ

でも実際問題無いからといって、例えば型推論のシステムを「作ればいいじゃない」は酷だよね、とか。「未来言語」とか「プロトタイプ言語」と言われるだけあって、多くのプログラミングにおける概念は何かしらの実装があるとは思うんだけど、それが実環境で使えるかどうかは別問題なわけで。