Lua中的逻辑编程?

时间:2012-02-18 08:34:57

标签: lua logic-programming

有没有办法在Lua中做logic programming(想想Prolog)?

特别是:是否有用于逻辑编程的Lua模块(miniKanren实现将是最好的,但并不是严格要求的)?因为我找不到任何[1]。如果没有,是否有任何已知的(最好尝试过)如何在Lua中进行逻辑编程?

另外:有没有人试图在Lua中做类似逻辑编程的事情?


[1]到目前为止,我发现只有blog post提到在Metalua中写一个的可能性,但我宁愿看到一个与标准的Lua兼容。

3 个答案:

答案 0 :(得分:1)

Lua中有一个名为lua-faces的前向链推理引擎。除了MiniKanRen之外,还有several other logic programming systems in JavaScript可以使用Castl自动翻译成Lua。

我也wrote a translator将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)
    )).

答案 1 :(得分:0)

答案 2 :(得分:-1)

逻辑程序设计是一种范式,因此它只是一种特定语法形式,您可以在这些事实的逻辑方程中陈述一些事实和基础结果,而事实本身可能是其他方程式的结果。

Lua不是专门为此设计的,但您可以通过将所有逻辑编程运算符定义为函数来轻松模拟此行为 - 即function and(...)仅在其所有参数都为真时返回true等。 ,并将你的“事实”定义为由metatable提供的懒惰评估表。