level 5
用Turbo prolog修改一个书上的例子程序。
寻找John的朋友: 条件是这个人喜欢音乐,以及阅读或运动。代码如下:
运行代码,提示我错误光标在hobby实例化的那一行,错误信息:
512 Type error: Wrong object type
源代码:
Domains
name=symbol
item=symbol
hb=hobby(item,item)
Predicates
likes(symbol,symbol)
likes(name,hb)
friend(symbol,symbol)
Clauses
likes(bell,sports).
likes(mary,hobby(music,sports)).%错在这里
likes(jane,smith).
friend(john,X):-likes(X,reading),likes(X,music).
friend(john,X):-likes(X,sports),likes(X,music).
Goal
friend(john,Y),write("Y=",Y)
2012年02月29日 09点02分
1
level 5
Domains
name=symbol
item=symbol
hb=hobby(item,item)--------------貌似这个是谓词吧
Predicates
likes(symbol,symbol)
likes(name,hb)-------------------这里hb=symbol
friend(symbol,symbol)
2012年03月01日 07点03分
2
level 5
根据以上几位大侠的提示,我改了一下代码:
Domains
name=symbol
item=symbol
hb=hobby(symbol,symbol)
Predicates
hobby(item,item)
likes(name,item)
likes(name,hb)
friend(name,name)
Clauses
likes(bell,sports).
likes(mary,hobby(music,sports)).
likes(jane,swim).
friend(john,X):-likes(X,reading),likes(X,music).
friend(john,X):-likes(X,sports),likes(X,music).
Goal
friend(john,Y),write("Y=",Y).
现在的错误是,401 No clauses for this predicate.
光标停在 hobby(item,item)这一行。
2012年03月02日 06点03分
5
level 5
因为你的谓词hobby()没有用到,是不是应该加二行:
friend(john,X):-likes(X,hobby(music,sports)).
friend(john,X):-likes(X,hobby(sports,music)).
2012年03月02日 07点03分
6
level 5
我下载了一个win prolog
直接把3楼的内容粘帖到win prolog里面不行啊,报错
| ?- likes(bell,sports).
likes(mary,hobby(music,sports)).
likes(jane,smith).
friend(john,X):-likes(X,reading),likes(X,music).
friend(john,X):-likes(X,sports),likes(X,music).
friend(john,X):-likes(X,hobby(music,sports)).
friend(john,X):-likes(X,hobby(sports,music)).
! ----------------------------------------
! Error 20 : Predicate Not Defined
! Goal : likes(bell,sports)
2012年03月02日 09点03分
9
level 5
我按照你说的,新建,把文本贴了进去,然后点击编译。
没有错误,编辑界面里面的关键字从深色变成了浅色。
但是如何运行和得到运行结果呢? 我还没有写我的Goal呢(Turbo prolog要求的结果写在Goal里面, win prolog呢)
请继续执教!
2012年03月02日 10点03分
11
level 5
我按照楼上的大侠说的做了,但是还是有问题:
1. 新建一个文档,把3L的代码粘贴进去,然后Compile All。看起来似乎没有问题。
2. 回到命令行状态,输入friend(john,Y).
| ?- friend(john,Y). ! ----------------------------------------
! Error 20 : Predicate Not Defined
! Goal : iend(john,_25926) Aborted
| ?-
到底错在哪里呢?
2012年03月03日 11点03分
14
level 5
用visual prolog的PIE,轻松得到答案。楼主请用Visual Prolog。
2012年03月04日 05点03分
15
level 5
发现gnu的prolog也行,就是没有编译运行和检查的功能。一样可以得到结果。
2012年03月06日 10点03分
19
level 1
楼主可以分享 一下 turbo prolog 编译器吗???
2019年03月05日 03点03分
20
Turbo prolog也太老了。Borland这个公司都不在了,没人进行维护。
2022年07月31日 13点07分