- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JPL 在 Java 程序中执行一些 SWI-Prolog 查询。当我想创建一个新查询时,我希望能够使用 jpl.Util.textToTerm
直接从用户输入中实例化 Terms,而无需自己解析。
问题是这个方法似乎总是将变量标识符(即以大写字母开头的东西)解析为匿名变量(即以 _
开头的东西)。
例如,jpl.Util.textToTerm("X")
返回一个名为 _1
而不是 的
,这显然是一个问题,因为这意味着我将无法在查询后访问任何绑定(bind)。jpl.Variable
>X
直接从字符串创建 jpl.Query
,例如 new Query("reverse([1,2],X)")
存在完全相同的问题。
最佳答案
_1
它不是一个匿名变量,所以这个问题并没有乍一看那么重要。
具有相同名称的变量(实际上,相同 变量)一旦从 JPL 接口(interface)返回,将具有相同的表示形式。否则,您应该提交邮件列表的错误...
你应该使用 read_term作为选项传递的谓词族 variable_names(Vars)
。例如,在 REPL 上
?- read_term_from_atom('a(X,Y,X)',T,[variable_names(L)]).
T = a(_G1434, _G1435, _G1434),
L = ['X'=_G1434, 'Y'=_G1435].
编辑重用 JPL 测试基础设施的快速测试(我将文件命名为 TestQuery.java)
import java.util.Map;
import org.jpl7.Query;
import org.jpl7.Term;
public class TestQuery {
public static void main(String argv[]) {
Query q = new Query("X = 1");
Map<String, Term>[] solutions = q.allSolutions();
System.out.println(solutions[0]);
}
}
输出
./run.sh
Compiling TestQuery
JPL demo: TestQuery
{X=1}
所以,也许我首先不理解您的问题,抱歉...您使用的是最新安装吗?
关于java - JPL textToTerm 只产生匿名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381298/
我正在使用 JPL 在 Java 程序中执行一些 SWI-Prolog 查询。当我想创建一个新查询时,我希望能够使用 jpl.Util.textToTerm 直接从用户输入中实例化 Terms,而无需
我是一名优秀的程序员,十分优秀!