2013-02-14 63 views
1

我是新來的prolog。這是一個假設的問題 - 我意識到它沒有實際用途。但是我試圖弄清楚如何在收到「否」的回報時讓Prolog表現出一種行爲方式,而如果收到「是」迴應則另一種方式。Prolog檢查函數「返回」否?

我想寫一個函數gothrough需要一個列表,檢查列表的頭是否等於',',如果是,將它傳遞給另一個函數checkitcheckit檢查傳遞的變量是否等於';'。如果是,則返回yes。如果不是,則返回否。我想gothrough瞭解此返回值並採取相應措施。據我所知,序言實際上沒有返回值,但我真的不知道該怎麼來形容我想做的事.... 所以我有這個至今:

checkit(H):- H==';'. 
gothrough([H|T]):- H==',', checkit(H), /*what do put here? if/else statement depending on return value of checkit*/ 

謝謝!

回答

3

首先,請注意,您所呼叫checkit/1的方式總是會失敗,因爲H已經綁定到','所以它顯然不能與​​3210在同一時間統一。現在

,關於你的if-then-else的問題,使用->/2控制斷言:

gothrough([H|T]):- 
    H==',', 
    (checkit(H) -> 
     writeln(true_part) ; 
     writeln(false_part) 
    ).