2016-10-27 71 views
0

我是Prolog的新手,我想要實現的操作是在保存在我的程序中的兩個列表上執行像append/3這樣的操作。我不需要打開swi-prolog並輸入append([a,b,c],[h,j,k],X).即可獲得X=[a,b,c,h,j,k]。我需要的是像從程序中檢索兩個列表並對其執行附加操作。 我甚至不知道我想在Prolog中獲得什麼。Prolog中的列表操作

這是我的情況:我得到這個「esempio.pl」文件,其中我有以下規律和這兩個事實:

personal_union(F,C,Xs) :- 
    personal_list(F,Fs),personal_list(C,Cs),append(Fs,Cs,Xs). 
personal_list(family,[alessandro,cinzia,fabio]). 
personal_list(colors,[blu,giallo,lilla,verde,rosso]). 

我想從SWI-質疑「esempio.pl」序言和問它:

personal_union(family,colors,X). 

,並獲得統一的列表:

X=[alessandro,cinzia,fabio,blu,giallo,lilla,verde,rosso]` 

是我的代碼可能的解決方案?我無法自己嘗試,因爲它一直給我這個錯誤:語法錯誤:非法開始期限指出錯誤在我的規則正文的開始。

回答

0

當我在Swish上測試它時,您的代碼是有效的,並且它會生成請求的結果。

您得到的錯誤通常是由錯誤語法(例如其他逗號或括號問題)導出的。檢查你的其他代碼。此外,您可能會發現http://swish.swi-prolog.org/適合此類調試。

+0

僅供參考,儘管有錯誤通知,我仍然對該程序提出質疑,並且獲得了我正在尋找的內容。謝謝! –

+1

@AlessandroSassi:你應該接受這個答案... – CapelliC

+0

@AlessandroSassi還不清楚你得到了什麼錯誤,爲什麼。 –