Prolog类型检查

时间:2010-10-05 14:04:17

标签: list types prolog

有没有办法确定Prolog中列表中元素的类型?我知道变量没有在Prolog中明确输入,但我需要检查一个元素是一个数字,一个特定的字符等等。如何实现呢?

5 个答案:

答案 0 :(得分:12)

Prolog为类型测试目的定义了一组内置谓词:var/1atom/1integer/1float/1atomic/1,{{1 }},compound/1nonvar/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)