Swi prolog错误输出
我有以下计划:Swi prolog错误输出,prolog,Prolog,我有以下计划: filter([],_What,[]). filter(List,What,Output):- not(select(What-Val,List,Rest)), filter([],What,Output). filter(List,What,[Val|Output]):- select(What-Val,List,Rest), filter(Rest,What,Output). 我不明白为什么会有以下问题: filter([age-90,
filter([],_What,[]).
filter(List,What,Output):-
not(select(What-Val,List,Rest)),
filter([],What,Output).
filter(List,What,[Val|Output]):-
select(What-Val,List,Rest),
filter(Rest,What,Output).
我不明白为什么会有以下问题:
filter([age-90, age-80,age-80],age,Output).
产出:
Output = "ZPP"
我有最新版本的SWI prolog(7.4.2),还有mac和El Captain(10.11.6)
我试过guitracer,它构建列表[90,80,80],但输出“ZPP”
我不知道为什么会这样
SWISH online prolog输出[90,80,80],因此它必须与SWI prolog有关
编辑
它似乎将数字转换为90=Z、80=p等字符
它为什么会这样做?很难说它是如何加载的,但这种行为可能是由
描述文本(true)
触发的:
其思想是,如果将文本处理为字符代码列表,则输出很难读取。Scription_text/1启用尝试解释的Scripte/1挂钩
作为字符代码列表的整数列表,如果成功,则将结果打印为字符串
GUI跟踪器可以配置为执行此操作,但我不认为这是默认设置。很难说它是如何加载的,但这种行为可以由
scrapture\u text(true)
触发:
其思想是,如果将文本处理为字符代码列表,则输出很难读取。Scription_text/1启用尝试解释的Scripte/1挂钩
作为字符代码列表的整数列表,如果成功,则将结果打印为字符串
GUI跟踪器可以配置为执行此操作,但我认为这不是默认设置。是的,在SWI Prolog中,
“ZPP”
表示Z
、p
和p
的“字符串”(列表)代码。所以它们是等价的。不确定您将SWI Prolog设置为什么模式,从而使其默认以字符串形式显示[90,80,80]
。也许更重要的是,您至少有两个单例变量,并且您的查询不会终止(无限生成解决方案输出=[90,80,80]
)。是的,在SWI Prolog中,“ZPP”
表示Z
、P
和P
的代码“字符串”(列表)。所以它们是等价的。不确定您将SWI Prolog设置为什么模式,从而使其默认以字符串形式显示[90,80,80]
。也许更重要的是,您至少有两个单例变量,并且您的查询不会终止(无限生成解决方案Output=[90,80,80]
)。这似乎是问题所在,将其设置为true在mac上不起作用,它仍然会输出数字。我在windows swi prolog上测试了它,它在描绘_文本(true)时正确输出字符。在我的Mac上运行良好。此功能的可移植性也与此问题无关。开始一个新问题,包括详细信息(版本,从二进制、Macports、自制软件安装,在终端或应用程序中使用等)。这似乎是问题所在,将其设置为true在mac上不起作用,它仍然输出数字。我在windows swi prolog上测试了它,它在描绘_文本(true)时正确输出字符。在我的Mac上运行良好。此功能的可移植性也与此问题无关。开始一个新问题,包括详细信息(版本、二进制安装、Macports、自制等,在终端或应用程序中使用等)
6 ?- A = [90,80,80].
A = [90,80,80].
7 ?- portray_text(true).
true.
8 ?- A = [90,80,80].
A = "ZPP".