我对prolog很新,我正在尝试编写一个谓词,以便我可以判断一个列表是否是一个大小的列表。目前我有这个:
one([H | T]) :- H \= [] ,T == [].
这有问题,至少我的逻辑是如果H
不是空的并且尾部没有任何东西,那么必须是头部有东西并因此具有大小的一。否则它没有。
非常感谢您解决此问题的一些见解。
答案 0 :(得分:5)
这很容易,只有一个事实:
one([_]).
答案 1 :(得分:1)
您可以尝试内置的length/2
:
is_list_of_length_one( Xs ) :- length(Xs,1).
或者你可以简单地说
is_list_of_length_one( Xs ) :- nonvar(Xs) , Xs = [_] .