Database Prolog-如何区分字符串和变量?

Database Prolog-如何区分字符串和变量?,database,prolog,Database,Prolog,查询Prolog数据库时,通常会使用以大写字母开头的术语作为变量。但是,假设您查询的约束条件之一是,一个人的位置必须是“Dallas”,并且您希望查询数据库中符合这些规范的所有信息。如何正确地确保Dallas不被解释为用于存储值的变量,而是被解释为字符串,以用作查询的约束条件?只需将Dallas包装为单引号:'Dallas'。顺便说一句,这不是一个字符串,而是一个原子。例如,在具有默认设置的Swi Prolog中,字符串为: ?- X = "hello". X = [104, 101, 108,

查询Prolog数据库时,通常会使用以大写字母开头的术语作为变量。但是,假设您查询的约束条件之一是,一个人的位置必须是“Dallas”,并且您希望查询数据库中符合这些规范的所有信息。如何正确地确保Dallas不被解释为用于存储值的变量,而是被解释为字符串,以用作查询的约束条件?

只需将Dallas包装为单引号:
'Dallas'
。顺便说一句,这不是一个字符串,而是一个原子。例如,在具有默认设置的Swi Prolog中,字符串为:

?- X = "hello".
X = [104, 101, 108, 108, 111].
而原子是

?- X = 'hello'.
X = hello.
它们都有自己的谓词集和语义