首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SWI-Prolog将带引号和不带引号的字符串(没有空格)统一到同一规则中?

为什么SWI-Prolog将带引号和不带引号的字符串(没有空格)统一到同一规则中?
EN

Stack Overflow用户
提问于 2010-11-05 04:18:01
回答 1查看 994关注 0票数 5

假设我有以下规则:

代码语言:javascript
复制
unify('test', 'this is a test').
run :- write('Enter something: '), 
       read(X), 
       unify(X, Y), 
       write('The answer is '), write(Y).

然后我按如下方式运行:

代码语言:javascript
复制
?- ['unify.pl'].
% unify.pl compiled 0.00 sec, -48 bytes
true.

?- run.
Enter something: test.
The answer is this is a test
true.

?- run.
Enter something: 'test'.
The answer is this is a test
true.

为什么SWI-Prolog将test'test'统一到unify('test', 'this is a test').?我在SO上回答一个Prolog问题时遇到了这个问题。虽然我能够回答这个人的问题,但我无法解释这种特殊的行为,我想知道是否有人可以。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-05 04:36:34

虽然SWI-PROLOG中的原子可以使用单引号来表示,例如'This is an atom',但是当SWI-PROLOG解析器可以从字符序列(通常以小写字母字符开始,例如test )中识别原子时,不需要单引号。如果序列包含空格(或其他一些字符),则需要使用单引号来正确地表示原子。字母数字字符和某些标点符号(如下划线_ )也可以,例如test5_6

如果不带单引号的字符序列以其他字符开头,如数字6k,则解析器将其视为number;如果它是大写字母字符,如Test,则解析器将其视为变量。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4100943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档