10

Prolog が文字列、数値、アトム、リスト、および複合構造を明確に区別している場合、どうしてそれを型なしと呼ぶことができるでしょうか。また、Lisp などの動的型付け言語とどのように異なるのでしょうか。

Prolog が矛盾するのは、「動的型付け言語」の定義のどの部分ですか? また、Lisp が矛盾するのは、「型指定されていない言語」の定義のどの部分ですか?

どんな洞察も高く評価されます。

アップデート

動的型付け、静的型付け、強い型付け、弱い型付けの違いは何なのか、私はすでに知っています。私の質問は、Prolog という特殊なケースについてです。動的に型付けされた言語と明確な違いがあるようには見えませんが、Prolog がどのように型付けされていないと見なされるかを理解したいだけです。

Prolog が型指定されていないことを示すリファレンスを 次に示しますhttp://en.wikipedia.org/wiki/Prolog#Types

4

2 に答える 2

4

Prolog は、ほとんどの場合、任意の項を任意の述語に渡すことができるという意味で型付けされていません。通常、最悪の場合、述語が成功しません。isただし、数値引数を期待するandなどの算術述語=:=は爆発する可能性があるため、そこには型の概念があります。

非純粋な述語は、「ファイル ハンドル」タイプのオブジェクトを期待することもあり、それ以外の場合は失敗する可能性があります。

したがって、Prolog を「型なし」と呼ぶことは、厳密には正しくありません。

于 2011-06-10T19:48:52.603 に答える
1

のような述語を書くと

head([H|_], H).

どこにもタイプを指定しません。あなたは電話することができますhead([1,2,3], X)、あなたは電話することがhead("foo", X)できますhead(1, [1,2,3])。それらはすべて問題なく実行されます。最後のものはエラーを引き起こさず、単に を返しfalse.ます。それが「型なし」の意味だと思います。

于 2011-06-10T19:30:02.947 に答える