如果列表在Prolog中的大小为1则告诉

时间:2014-05-06 00:48:27

标签: prolog

我对prolog很新,我正在尝试编写一个谓词,以便我可以判断一个列表是否是一个大小的列表。目前我有这个:

one([H | T]) :- H \= [] ,T == [].

这有问题,至少我的逻辑是如果H不是空的并且尾部没有任何东西,那么必须是头部有东西并因此具有大小的一。否则它没有。

非常感谢您解决此问题的一些见解。

2 个答案:

答案 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 = [_] .