Schemeにおいてソフトタイピングが成功しなかった*1理由というのは,Schemeコアにはデータ構造がリストしか存在せず,組み込みデータ型の取り扱いが大きな問題になっていたからではないだろうか.リストって難しいし.

Rubyでも,やっぱり組み込み型の取り扱いは問題になるわけだが,その他のユーザが定義するクラスなどの構造が自明でないくらい複雑になるため,相対的に小さな問題になる.ユーザーが普通に定義するクラスがそれなりに解析できれば(できるはず),それなりに使いでがあるものになると信じている.もちろんリフレクションなどは依然として問題になるわけだが,それは適当に注釈を付ければ良い.あんまりカジュアルにリフレクションやevalを多用するというのは,やっぱり推奨されるスタイルにはならないだろうし.



'a -> 'bみたいな「なんにも言ってないじゃん」というメソッド型が頻出するObjectとかの型を書くには,そういうことを考えないとやってられない.

*1:よく知らないで書いているので,本当は成功していたのかもしれんけど.とりあえず主流になっていないという点では失敗と言っておく.