删除 PROLOG 中列表的元素

问题描述 投票:0回答:1

我需要在序言中删除列表的一个元素,但只有当您将列表放入咨询中时它才有效,例如:

eliminar(1,[1,2,3], X)
。它返回
X=2,3
,但是当我想删除列表“aves”的元素时,它给我 false
eliminar(loro,aves,X)
,它返回 false。

aves([aguila, paloma, loro, canario]).
% Predicado para eliminar un elemento de una lista
eliminar(X,[X|Xs], Xs).
eliminar(X,[Y|Ys] , [Y|Zs]) :- eliminar(X,Ys,Zs).

我正在尝试添加[aves],但不起作用

prolog swi-prolog
1个回答
0
投票

只有大写单词才是 prolog 中的变量。当您写下

aves
时,它不会被其他任何内容替代。

如果已声明,

aves([...]).
那么要取回该列表,您必须查询
aves(X)
,它将列表作为变量
X
返回。

aves([aguila, paloma, loro, canario]).
| ?- aves(X).
X = [aguila,paloma,loro,canario]
yes 

所以你的查询应该是:

| ?- aves(X), eliminar(loro, X, Y).
X = [aguila,paloma,loro,canario]
Y = [aguila,paloma,canario] ? 
yes
© www.soinside.com 2019 - 2024. All rights reserved.