在SWI Prolog swish中使用插入谓词?

在SWI Prolog swish中使用插入谓词?,prolog,swi-prolog-for-sharing,Prolog,Swi Prolog For Sharing,我试图执行一个简单的三行代码 insert(X,[],[X]). insert(X,[H|T],Z):-X>=H,Z=[X,H|T]. insert(X,[H|T],Z):-X<H,insert(X,T,Z2),Z=[H|Z2]. 编辑:似乎非ascii字符存在问题。这导致了一个错误 错误:/home/F3Vzlp/prog:10:21:语法错误:应为运算符 错误:/home/F3Vzlp/prog:11:21:语法错误:应为运算符()您使用的破折号(-)出现问题,它似乎不是asc

我试图执行一个简单的三行代码

insert(X,[],[X]).
insert(X,[H|T],Z):-X>=H,Z=[X,H|T].
insert(X,[H|T],Z):-X<H,insert(X,T,Z2),Z=[H|Z2].
编辑:似乎非ascii字符存在问题。这导致了一个错误 错误:/home/F3Vzlp/prog:10:21:语法错误:应为运算符
错误:/home/F3Vzlp/prog:11:21:语法错误:应为运算符()您使用的破折号(
-
)出现问题,它似乎不是ascii减号(
-

事实上,如果您键入一个终端:

iconv -c -f utf-8 -t ascii <<EOF

iconv-c-f utf-8-t ascii您使用的破折号(
-
)出现问题,它似乎不是ascii减号(
-

事实上,如果您键入一个终端:

iconv -c -f utf-8 -t ascii <<EOF

iconv-c-f utf-8-t ascii您的程序可以与、swipl和gprolog一起工作。以下是使用后者的文字记录:

$ gprolog --consult-file insert.prolog
GNU Prolog 1.4.4 (64 bits)
...
insert.prolog compiled, 3 lines read - 1234 bytes written, 16 ms
| ?- insert(1,[0,2,4], X).
insert(1,[0,2,4], X).

X = [1,0,2,4] ? ;
;

no
| ?- 
您遇到的第一条错误消息(关于“true/0”)表明某个地方有一些无关的文本


顺便说一下,你的程序可以稍微改进一下。(提示:不需要Z。)

您的程序可以与、swipl和gprolog一起工作。以下是使用后者的文字记录:

$ gprolog --consult-file insert.prolog
GNU Prolog 1.4.4 (64 bits)
...
insert.prolog compiled, 3 lines read - 1234 bytes written, 16 ms
| ?- insert(1,[0,2,4], X).
insert(1,[0,2,4], X).

X = [1,0,2,4] ? ;
;

no
| ?- 
您遇到的第一条错误消息(关于“true/0”)表明某个地方有一些无关的文本


顺便说一下,你的程序可以稍微改进一下。(提示:不需要Z。)

但是,这并不能解决后面的错误,请参阅更新的问题。@Aaron_H:请不要修改您的问题。此答案现在不再是您问题的答案。好的,很抱歉,如果其他人出现相同的问题,我将其重新修改为显式。但是,这并不能解决后面的错误,请参阅更新的问题。@Aaron_H:请不要修改您的问题。此答案现在不再是您问题的答案。好的,对不起,如果有其他人出现相同的问题,我将其重新修改为显式。