我有一个名为unify的谓词,它应该将列表中的所有匿名变量(列表包含0、1和匿名变量)替换为数字1。但是,我认为我做的递归是错误的,因为输出不是完全完成的列表。这是代码:‘
unify([P|T], [1|L]):-
P\==0, P\==1, !, unify(T,L).
unify([P|T],[P|L]):-
P==0; P==1,!, unify(T,L).例如,输入unify([_,_,1,0,0,_,_],L).的输出应该是L=[1,1,1,0,0,1,1].
发布于 2019-04-24 14:28:12
unify/2这个名称通常用于实际的通用统一。请注意,此谓词不是纯关系谓词。
binlist_oneified(Bs, Os) :-
must_be(list, Bs),
copy_term(Bs, Os),
term_variables(Os, Ws),
maplist(=(1), Ws).https://stackoverflow.com/questions/55831366
复制相似问题