この質問はここで尋ねられましたが、不十分な回答を得て、問題を明確にしませんでした。私はそれが再びそれを求めることを正当化すると信じています。
動的に型付けされた言語または静的に型付けされた言語のいずれかでダックタイピングができることを理解しています(ただし、C ++のテンプレートなど、これらの例はまれです)。
しかし、ダックタイピングのない動的に型付けされた言語のようなものがあるかどうかはわかりません。
ダックタイピングとは、オブジェクトのタイプが、特定の時点でのオブジェクトの操作と属性に基づいていることを意味します。ダックタイピングを必然的にサポートせずに動的タイピングを行う方法はありますか?
たとえば、このPythonコードを見てみましょう。
def func(some_object)
some_object.doSomething()
something = Toaster()
func(something)
動的型付け言語では、オブジェクトの型は実行時にのみ認識されます。そのため、操作(例some_object.doSomething()
:)を実行しようとすると、ランタイムには選択肢が1つしかありません。これは、some_object
サポートのタイプかどうかをチェックするdoSomething()
ことです。これは、正確にダックタイピングと同じです。
だから、ダックタイピングなしで動的に型付けされた言語を持つことは可能ですか?説明してください。
1 + "1"
。Pythonの場合、チェックの原則はほとんどなく、ユーザー(Pythonのランタイムではなく)が有用であると判断した場合にタイプをチェックするかどうかは、ユーザーコードの実装次第です。また、ダックタイピングと非ダックタイピングは、名義型vs構造型タイピングと似ています(Wikipediaを参照)。