2012-04-30 16 views
0

我正在Prolog的樹中工作;樹節點使用以下形式表示:Left-NodeValue-Right。爲了強制優先,使用圓括號。注意圓括號是至關重要的,因爲樹(nil-5 + nil)-3 + nil和nil-5 +(nil-3 + nil)明顯不同。我的問題是:我如何處理括號?Prolog括號

我試過的一個解決方案是使用concat_atom(+ List,-Atom)。但是然後表達式[(,nil,)]顯然會給出一個錯誤,['(',nil,')']會產生原子'(零)',而不是(nil)。

有什麼建議嗎?謝謝!

回答

2

首先,你爲什麼選擇這種不尋常的表示?用一個像node(Left, Value, Right)這樣的三元術語表示一個內節點似乎更合適。你代之以-(-(Left, Value), Right),這似乎有點不合適。至於你的問題:爲了強制執行優先權,在你寫下這個術語時,簡單地使用括號。 Prolog的頂層將自動以「正確」的方式打印這個術語的答案,我看不需要使用concat_atom/2,或者如果有的話,請解釋爲什麼你不能直接輸入術語。