2013-03-15 11 views
5

静的型付けされた言語と動的型式の言語については非常に面倒です。しかし、私の目では、静的に型定義された言語は、コンパイラ(または通訳)があなたの意図についてもう少し知ることを可能にしますが、伝えられるものの表面をほとんど傷つけません。確かに、いくつかの言語は、アノテーションに少し多くの情報を提供する直交メカニズムを持っています。型理論を超えて

私はAgdaやCoqのような強く型付けされた言語は、あなたが何をすることができるのか非常に苛立っていることに気付いています。私はそれらにひどく興味がありません。むしろ、私はあなたが意図していることについてコンパイラに説明できるものの豊かさを拡大する言語や理論が存在するのか疑問に思っています。たとえば、の可変ビットベクトルを単位ベクトルに変換すると、なぜ計算コストの高い一般的な形式ではなく、ベクトル投影の単位ベクトル形式を選択できないのでしょうか?タイプは変更されていません。必要なタイプをすべて構築するために必要な作業は、Haskellのような驚くほど簡単なタイプの言語であっても不快ですが、コンパイラは多くのことを知ることができるようです状況について

いくつかの言語は、標準的な型理論の外か、より高度な分岐のいずれかの中で、すでにこのようなことを可能にしていますか?

+1

あなたが求めているものがまさに彼らが提供しているものですが(なぜなら、実際的ではないが、Idrisはより実用的な方向に向かいます) ?特定の種類のベクトルの巧妙な表現のあなたの特定の例は、Haskellのベクトルライブラリによってすでに提供されています。また、LiquidHaskellやGHCの契約でDana Xuが行った初期の研究に興味があるかもしれません。 – copumpkin

+0

@copumpkin - おそらく私は興味を持っているはずですが、私が見てきたすべての例は、それらがどれほど有用であるか非常に頑丈であり、推論の対象となる可変かつオブジェクト指向のコンテキストにそれらをどのように拡張するのか分かりませんとにかく助けが必要です。 –

+0

@Rex依存型よりも表現力豊かな抽象化を探していますか?もしそうなら、あなたは例を挙げることができますか?そうでなければ、おそらくあなたは満足のいく方法でそれを実装する言語を探しているでしょう。 –

答えて

0

チューリング完全なシステムタイプの言語があります。これは、あなたの型が任意の計算可能なプロパティを表現できることを意味します。例えば長さ6のリストまたは有効なクレジットカード番号。しかし、ほとんどの主流言語は、よりシンプルなシステムタイプを使用しています。 haskellは非常に強力なシステムタイプと見なされます

+0

Scalaはそのような言語の1つですが、実際には型システムで一般的な計算を実行するのは扱いにくく実用的ではありません。したがって、理論的には真実ですが、この観察は実際に私の質問に答えません。 –

関連する問題