静的型について議論する。実は昔はEiffelの影響を受けて静的型オブジェクト指向言語至上主義だったのだ。卒論で作った言語も静的型言語だったし。静的型のメリットと言えば、以下のようなものであろう。式の展開・畳み込みを行う余地がある。Rubyみたいな言語を作ってると「お前は最適化にウラミでもあるのか」というくらい最適化しにくい。間違いが検出しやすい。実行効率に貢献する「最適化」よりも開発高率に貢献する「間違いの検出」の方が重要度が高いといえるような気がする。実際には最近登場する言語の多くは動的な性質を多く持ち、動的な型を持つ言語である。静的型言語の方が優れているとはいちがいには言えない。静的型のデメリットはこんな感じだろうか。全ての変数に型を書くのは面倒くさいたくさん書くことでチェックに使える情報を増やしているわけだから当然と言えば当然だ。代入による型伝搬(Satherにある)や型推論(MLやHaskellにある)で軽減することができる。静的型言語ではそのような柔軟性は困難だ。実際にはあまり活用されていないようだ。柔軟性を減らさないような型の運用を積極的に支援するような静的型言語の登場する余地はあるのではないか。型伝搬、型推論を積極的に行う。型推論はHaskellほど強力にしない(すぐ分かんなくなっちゃうから)。既存のクラスにメソッドを追加することは禁止。名前空間を使って「この名前空間においては、このクラスにはメソッドが多い(少ない)」というのはアリかも。型は構造ではなく、signatureで表現する。型をメソッドの集合によって表現する。ドラスティックすぎるか。型の互換性はsignatureの包含関係でチェックする。Satherのように「構造の型」と「インタフェース(signature)の型」を分離するのも面白い。面白い言語になると思うのだが。若い人には新しい発想の言語を作り出してほしい。うーむ、langsmithネタかな。