Prolog中的列表操作

时间:2016-10-27 21:44:43

标签: list prolog

我是Prolog的新手,我想要实现的是在我的程序中保存的两个列表上执行像append / 3这样的操作。我不需要打开swi-prolog并输入append([a,b,c],[h,j,k],X).以获取X=[a,b,c,h,j,k]。我需要的是从程序中检索两个列表并对它们执行追加。 我甚至不知道我想在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-prolog的“esempio.pl”并问它:

personal_union(family,colors,X).

获取统一列表:

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

我的代码是否可能成为解决方案?我自己无法尝试,因为它一直给我这个错误:语法错误:非法开始使用,说明错误是在我的规则正文的开头。

1 个答案:

答案 0 :(得分:0)

我在Swish上测试时你的代码是有效的,它产生了请求的结果。

您获得的错误通常来自错误的语法,例如额外的逗号或括号问题。检查你剩下的代码。此外,您可能会发现http://swish.swi-prolog.org/适合此类调试。