9

Lua でロジック プログラミング (Prolog を考える)を行う方法はありますか?

特に: ロジック プログラミング用の Lua モジュールはありますか ( miniKanrenの実装が最適ですが、厳密には必須ではありません)。[1]が見つからなかったからです。そうでない場合、Luaでロジックプログラミングを行う方法が知られている(できれば試した)方法はありますか?

また、Lua で論理プログラミングのようなことをやろうとした人はいますか?


[1] これまでのところ、Metalua で作成する可能性について言及しているブログ投稿しか見つけていませんが、標準の Lua と互換性のあるものを見たいと思っています。

4

3 に答える 3

1

Lua にはlua-facesと呼ばれる前向き推論エンジンがあります。MiniKanRen に加えて、Castl を使用して自動的に Lua に変換できる JavaScript のロジック プログラミング システムがいくつあります

また、Lua のサブセットを Prolog に変換するトランスレーターも作成しましたこの入力を考えると:

function print_each(The_list)
    for _, Item in pairs(The_list) do
        print(Item)
    end
end

Prolog で次の出力が生成されます。

print_each(The_list) :- 
    forall(member(Item,The_list),(

        writeln(Item)
    )).
于 2016-08-13T23:20:05.830 に答える
-1

論理プログラミングはパラダイムであるため、いくつかのファクトを記述し、それらのファクトの論理方程式に基づいて結果を示し、ファクト自体は他の方程式の結果である可能性がある特定の構文の形式にすぎません。

Luaはこのために特別に設計されたものではありませんが、すべての論理プログラミング演算子を関数として定義することで、この動作を簡単にシミュレートできます。つまり、すべての引数がtrueの場合にのみfunction and(...)返され、「ファクト」を遅延のあるテーブルとして定義します。 truemetatableによって提供される評価。

于 2012-08-28T16:01:26.500 に答える