7

私はPythonとプロローグに不慣れです。私の理解では、Pythonは強く型付けされた言語です。Prologも強く型付けされた言語ですか?

4

4 に答える 4

9

Python と同様に、整数でないものを追加しようとすると、Prolog は型エラーを返します。しかし、これは Prolog の機能の限界にすぎません。Prolog が「強く型付けされている」かどうかを言うことはあまり役に立ちません — 私はすでに「強く型付けされている」という質問に対する非常に多くの回答を書き、「強く型付けされている」という質問に対する他の人の間違った回答を書き直しました。その言葉をもう一度聞くために。それでもどこかで、インターネット上の誰かが間違っています。

知っておくと便利なことは次のとおりです。

  • Prolog と Python はどちらも動的に型付けされます。つまり、プログラムは実行時まで「型エラー」についてチェックされません。この場合の典型的な「型エラー」は、「間違った」種類の値に適用された関数/メソッド (Python) または関係 (Prolog) です。また、Python は、間違った数の引数に何かを適用するケースを検出します。

  • Python には、型が正しくない、つまり、型エラーのために実行時に拒否される項 (式) がかなりあります。

  • Prolog では、定義上、ほぼすべての用語がタイプ コレクトです。たとえば、ユーザー定義のファンクターは任意の長さの項のリストに適用でき Prologそれを整形式の関係として喜んで解釈しようとします。リレーションに対して「間違った」数の引数を取得した場合、Prolog はこれを型エラーとして扱いません。同じ名前の異なるアリティを持つ 2 つの異なるリレーションがあることを前提としています。(この動作が有用かどうかは議論の余地がありますが、それが Prolog の動作です。) Prolog は IS のような組み込みリレーションに対して少し厳密です。

    X is Y + Z
    

知っておくと便利なことは、Prolog では、動的型システムが拒否する用語は非常に少なく、Python の動的型システムよりもはるかに少ないということです。このアカウントで、Prolog を「弱い」と呼び、Python を「強い」と呼ぶことを選択した場合は、そうすることができます。「強い」と「弱い」という用語には、普遍的に合意された技術的な意味がないからです。しかし、Prolog の動的型システムは、Python のシステムとは異なり、ほぼすべての関係と用語を型付きで受け入れると考え、言ったほうがよいでしょう。そうすれば、実際に何が起こっているのかを伝えることができます。

于 2010-05-07T01:31:12.187 に答える
4

Python は強く型付けされています。

すなわち:

"1" + 1

レイズTypeError

ただし、Prologは強く型付けされていないと思います。

于 2010-05-07T00:31:03.820 に答える
3

Prolog は厳密に型指定された言語ではありません。

参照: http://scom.hud.ac.uk/scomtlm/book/node187.html

于 2010-05-07T00:34:06.097 に答える
1

[...] Prolog も強く型付けされた言語ですか?

いいえ

于 2010-05-07T00:36:24.287 に答える