タグ付けされた質問 「type-checking」

変数、式、または値が宣言された型を持っていることの確認

2
明示的なアプリケーションまたはサブタイプなしの上位の多態性?
したがって、言語でより高いランクのポリモーフィズムを持つ2つの主な戦略に精通しています。 System-Fスタイルのポリモーフィズム。関数は明示的に型指定され、インスタンス化は型アプリケーションを通じて明示的に行われます。これらのシステムは命令的である場合があります。 サブタイピングベースのポリモーフィズム。ポリモーフィックタイプは、そのすべてのインスタンス化のサブタイプです。決定可能なサブタイピングを行うには、ポリモーフィズムが予測的でなければなりません。このペーパーでは、そのようなシステムの例を示します。 ただし、Haskellのような一部の言語では、明示的な型アプリケーションを使用せずに、命令的に高いランクの多態性を持っています。 これはどのようにして可能ですか?明示的なインスタンス化またはキャストなしで、サブタイプの概念なしで型をインスタンス化する場合、型チェックは「知る」ことができますか? または、そのようなシステムではタイプチェックは決定可能ですか?これは、Haskellのような言語が、ほとんどの人のユースケースでうまく機能する決定不能なものを実装するケースですか? 編集: 明確にするために、私は多態的に型付けされた値の定義ではなく使用に興味があります。 たとえば、次のように仮定します。 f : forall a . a -> a g : (forall a . a -> a) -> Int val = (g f, f True, f 'a') f引数として与えられたときではなく、それが適用されたときにインスタンス化する必要があることをどのようにして知ることができますか? または、関数型から自分自身を分離するには: f : forall a . a g : (forall a . a) -> …

1
参照リクエスト:事前に安全性チェックを実行して、動的言語のリストの手順を最適化する
science fairプロジェクトでは、Pythonのソートルーチンの最適化を実装しました。アイデアは、各比較中に実行する必要がある安全性チェック(タイプチェックや文字幅チェックなど)をソートループの外に移動し、それらすべてを1つのパスで実行することです。次に、チェックの結果に基づいて、ポートフォリオから最適化された比較関数が選択されます。したがって、たとえば、チェックですべてのオブジェクトが同じタイプであると判断された場合、選択された比較関数は、通常必要な「オブジェクトタイプの互換性がある」チェックをスキップできます。等。 私はこれを論文として書き上げる必要があり、現在文献レビューに取り組んでいます。他の動的言語/一般的に同様の手法を説明した論文はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.