在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:请不要修改您的问题。此答案现在不再是您问题的答案。好的,对不起,如果有其他人出现相同的问题,我将其重新修改为显式。