从maplist / 3结果中过滤随机结果

时间:2016-01-21 08:48:29

标签: list prolog sicstus-prolog

我希望使用谓词is_upper / 2和maplist / 3过滤掉此列表List=['F1',a1,a2,' LF2',a1,a2]

is_upper(Elem,Res):如果Elem是大写的原子,它将被分配给Res 然后我想将所有大写原子放入列表List_Upper

我试试这个;

?- maplist(is_upper,List,List_upper).
List_Upper = ['F1',_A,_B,'F2',_C,_D,'F3',_E,_F] ? ;

我如何过滤随机_A,_B...

已过期结果:

 List_Upper = ['F1','F2','F3'] 

问候

1 个答案:

答案 0 :(得分:1)

include/3收集真实结果的元素和exclude/3的虚假元素

| ?- include(is_lower,['FUNCTOR1','arg1','arg2','FUNCTOR2','arg3','arg4','FUNCTOR3','arg5','arg6'],List_Lower).
List_Lower = [arg1,arg2,arg3,arg4,arg5,arg6] ? ;
no