型付けされていない言語でカスタム型推論言語を使用するプロジェクトの実現可能性を調査しようとしています。(言語自体は重要ではありませんが、たまたま PHP です)。私の最初のアイデアは、これで型の統一を実行することです。私は Haskell で少しプログラミングしたことがあるので、エンドユーザーの観点から型の統一がどのように機能するかは知っていますが、アルゴリズムの詳細を深く掘り下げたことはありません。
この時点で、PHP コード ファイルを解析し、対応する一連のルールを作成して、それらのルールに対して統合アルゴリズムの実行を開始したいと考えています。車輪を再発明するのではなく、既存の統合アルゴリズムを使用することにしました。AFIAK の Prolog は、最も堅牢な統合アルゴリズムの 1 つです。
検証可能な正しい入力を渡すと、Prolog は "true" を返します。正しくないものを渡すと、"false" が返されます。このシナリオで本当に必要なのは、型が統合されなかった理由を示すエラー メッセージを取得することです。SWI-Prolog で「トレース」モードをオンにすると、多かれ少なかれ探しているもの、型が統合されなかった理由の段階的な説明が得られます。私の中心的な質問は、この情報をプログラムで取得することは可能ですか? 私は C 拡張機能を書き、それが必要であれば Prolog コンパイラに直接リンクするつもりです。また、私は SWI-Prolog とは何の関係もありません。Google で最初に見つけたものです。
また、余談ですが、ウェブ形式または実際の本として、プロローグの優れたチュートリアルを知っている人はいますか?