私はPythonとプロローグに不慣れです。私の理解では、Pythonは強く型付けされた言語です。Prologも強く型付けされた言語ですか?
4 に答える
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 のシステムとは異なり、ほぼすべての関係と用語を型付きで受け入れると考え、言ったほうがよいでしょう。そうすれば、実際に何が起こっているのかを伝えることができます。
Python は強く型付けされています。
すなわち:
"1" + 1
レイズTypeError
ただし、Prologは強く型付けされていないと思います。
Prolog は厳密に型指定された言語ではありません。
[...] Prolog も強く型付けされた言語ですか?
いいえ