我有以下程序:束縛水飽和度,序言錯誤怪異輸出
filter([],_What,[]).
filter(List,What,Output):-
not(select(What-Val,List,Rest)),
filter([],What,Output).
filter(List,What,[Val|Output]):-
select(What-Val,List,Rest),
filter(Rest,What,Output).
我不明白,爲什麼下面的查詢:
filter([age-90, age-80,age-80],age,Output).
輸出:
Output = "ZPP"
我有最新版本SWI-prolog(7.4.2),並與El Captain(10.11.6)一起使用。
我已經嘗試過guitracer,它建立了列表[90,80,80],但輸出「ZPP」 我不知道它爲什麼這樣做。
SWISH在線prolog輸出[90,80,80],所以它必須是SWI-Prolog。
編輯
看來,將其轉換成數字字符90 = Z,80 = P,等等
它爲什麼要這樣做呢?
是的,在SWI Prolog中,''ZPP「'代表'Z','P'和'P'的代碼的」字符串「(列表)。所以它們是等價的。不知道你的SWI Prolog設置爲什麼模式會導致默認顯示'[90,80,80]'爲字符串。也許更重要的是,你至少有兩個單例變量,並且你的查詢不會終止(無限地產生解決方案Output = [90,80,80]')。 – lurker