Логическое программирование - это парадигма, и, таким образом, это просто форма определенного синтаксиса, где вы формулируете некоторые факты и основываете результат на логическом уравнении этих фактов, тогда как сами факты могут быть результатами других уравнений.
Lua специально не предназначен для этого, но вы можете легко смоделировать это поведение, определив все операторы логического программирования как функции - то есть function and(...)
, которые будут возвращать true
только если все его аргументы верны, и т. Д., И сделав определение ваши "факты" в виде таблицы с ленивой оценкой, предоставленной metatable.