作者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