有没有办法确定Prolog中列表中元素的类型?我知道变量没有在Prolog中明确输入,但我需要检查一个元素是一个数字,一个特定的字符等等。如何实现呢?
答案 0 :(得分:12)
Prolog为类型测试目的定义了一组内置谓词:var/1
,atom/1
,integer/1
,float/1
,atomic/1
,{{1 }},compound/1
,nonvar/1
,如果你知道语言的数据类型,所有这些都具有非常明确的含义。对于特定字符,在检查元素不是自由变量之后,您可以利用该字符的统一(否则统一总是成功)。
答案 1 :(得分:4)
您可以尝试以下代码:
isList([_|_]).
isList([]).
希望它有所帮助。
答案 2 :(得分:2)
要检查变量是否绑定到列表,可以使用is_list/1
。
答案 3 :(得分:0)
查看您可以尝试的列表:
listing(is_list/1, list_functor/1).
is_list(X) :-
functor(X, F, _),
list_functor(F).
list_functor('.').
list_functor('[]').
答案 4 :(得分:-1)