首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在swish中使用插入谓词?

在swish中使用插入谓词?
EN

Stack Overflow用户
提问于 2015-08-27 01:14:58
回答 2查看 989关注 0票数 1

我正在尝试执行一段看似简单的三行代码

代码语言:javascript
复制
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].

但由于某些原因,我无法让它在斯威什IDEone等许多在线代码编译器上编译或执行。问题似乎是“插入”不是一个公认的谓词。我尝试了几个谷歌搜索,似乎没有什么可以插入。谢谢!(很抱歉对Prolog非常陌生)

代码语言:javascript
复制
ERROR: /home/uJ0Y9U/prog:13:
    No permission to modify static procedure `true/0'
Warning: /home/uJ0Y9U/prog:15:
    Goal (directive) failed: user:main
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit

编辑:似乎有一个问题的非ascii字符。这导致了错误: /home/F3Vzlp/prog:10:21:语法错误:操作符预期错误: /home/F3Vzlp/prog:11:21:语法错误:操作符预期错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-27 02:54:03

例如,您的程序可以使用http://swish.swi-prolog.org/、swipl和gprolog。以下是使用后一种语言的文字记录:

代码语言:javascript
复制
$ 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.)

票数 3
EN

Stack Overflow用户

发布于 2015-08-27 01:58:00

您使用的破折号()有一个问题,它似乎不是ascii减号(-)。

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

代码语言:javascript
复制
iconv -c -f utf-8 -t ascii <<EOF

然后粘贴您的代码并按CTRL+D,您将看到减号将被剥离。

尝试手动重写您的代码,或将其粘贴到某个位置,并手动更正:-中的减号,您就会没事的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32239149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档