如果元素不等于string,则Prolog将添加到列表中

时间:2015-03-28 17:23:03

标签: prolog prolog-dif guard-clause

我正在尝试创建一个具有非null Guard元素的对列表。

get_only_guarded(L) :-
    Guard \= null,
    findall([S,D],transition(S,D,_,Guard,_),L).

这是我尝试过但它似乎没有用。什么是正确的方法?

2 个答案:

答案 0 :(得分:3)

请改用dif(Guard,null)。小心处理(\=)/2

答案 1 :(得分:2)

更“传统”的做法:在实例化后推送测试

get_only_guarded(L) :-
    findall([S,D], (transition(S,D,_,Guard,_),Guard \= null), L).