作者Arim (Arim5566)
看板Programming
标题[问题] prolog一个小问题
时间Sat Dec 17 21:00:53 2011
各位版友好
假如我的fact跟rule如下:
course(cse320, [cse300], 4).
course(cse222, [cse100, cse115], 3).
course(cse400,[cse100], 3).
student(john, [cse320, cse222]).
student(mary, [cse320]).
instructor(jim, [cse320, cse100]).
instructor(alpha,[cse222]).
course_credit(X,Y) :- course(X,P,Y).
现在我的query下
course_credit(X,3).
本来以为应该会执行course(X,P,3).
然後从第一条到第三条事实找答案
照理说应该根据第二条根第三条事实会正确(有两组答案)
可是prolog却是回传no
trace之後发现他不会执行coures(X,P,3)
而是只有呼叫course_credit(X,3)就停了(而且还call fail)
但是如果是直接query打course(X,P,3)是执行正确的
请问我在这边哪里写错了??
--
~宅男的四个徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以当好人为乐 忘记正妹亏欠自己
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.197.57
※ 编辑: Arim 来自: 114.32.197.57 (12/17 21:06)
1F:→ yauhh:你用哪一套Prolog软体? 61.231.64.156 12/17 21:18
2F:→ Arim:SWI-prolog 114.32.197.57 12/17 21:19
3F:→ yauhh:怪了,我也用SWI,不过query你那程式有结果. 61.231.64.156 12/17 21:20
4F:→ yauhh:5.8.2 61.231.64.156 12/17 21:21
5F:→ Arim:请问你是把上面我贴的fact跟rule拿去编译吗? 114.32.197.57 12/17 21:21
6F:→ yauhh:没错. 就算用看的,也觉得应该没问题. 61.231.64.156 12/17 21:22
7F:→ Arim:..怪了 刚刚跑了一下 发现执行正常有结果.. 114.32.197.57 12/17 21:22
8F:→ Arim:我再仔细看一下 谢谢版友的帮忙 114.32.197.57 12/17 21:23
9F:→ yauhh:是不是写好忘了重新consult呢? 61.231.64.156 12/17 21:24
10F:→ Arim:我一开始是直接拿文字档(txt)去编译 114.32.197.57 12/17 21:25
11F:→ Arim:後来把他修成.pl档 就正常.. 114.32.197.57 12/17 21:25
12F:→ Arim:可是我想应该不是那个问题..可能是query打错 114.32.197.57 12/17 21:26
13F:→ Arim:还是谢谢版友的帮忙:) 114.32.197.57 12/17 21:27
14F:→ yauhh:或者不小心打了小写x,就变成atom 61.231.64.156 12/17 21:30