提问人:user22579265 提问时间:9/19/2023 最后编辑:user22579265 更新时间:9/19/2023 访问量:16
Prolog:如何进行重复的打印/输入语句?
Prolog: How do I make repeating print/input statements?
问:
我正在使用 SWISH Prolog 创建一个“聊天机器人”,当用户写下“退出”时,它就会停止。到目前为止,这是我的代码:
chat :-
write('hello I am a chatbot'),
nl,
write('when you see "user:" type a word followed by "."'),
nl,
write('or type "stop." if you want to stop this nonsense!'),
read(X);
reply(X).
reply(X) :-
X = 'quit' -> print('Goodbye'), !; write(":P"),
write("did you want "),
write(X),
write('?'),
read(Newx);
reply(Newx).
当它运行时,我希望它在 print 语句中写入 X 的值,但它输出“你想要 [null 值]吗?”而不是“你想要 [x]吗?([x] 是 x 的输入值)。if 语句总是返回 true(非常确定这与字符串有关,但我不知道如何修复它),当我拿出它来测试其余代码时,它只运行 reply 函数的一个实例。它似乎没有递归,即使语句在那里。
3 个问题:如何传递 X 以显示在 reply(X) 中,如何使 reply 函数实际递归,以及字符串比较如何在 Prolog 中工作?
更新:固定变量和标点符号的大写(当读取语句中应该有“,”时为“;”)。这几乎解决了所有问题,哈哈
答: 暂无答案
评论
X
x
NewX
newx