如何获得用户输入prolog并存储它

时间:2014-11-24 23:13:26

标签: prolog prolog-toplevel

我试图让用户输入他们的生日,所以我可以告诉他们他们的星座。但是,我在实际的生日和月份遇到了麻烦。有人可以帮帮我吗?我已经尝试将读取分成不同的函子,但我一直在收到错误。我结合两次读取时得到的错误是"语法错误:操作员优先级冲突。"我将两个读取分开时得到的错误是"错误:=:= / 2:参数没有充分实例化。"

组合读物时的代码:

start :-
   read_month,

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X),
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).

我分开阅读时的代码:

start :-
   read_month,
   read_day.

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X).

read_day :-
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).

1 个答案:

答案 0 :(得分:3)

作为初学者,不要那样开始。 (并且你的第一个程序在语法上是不正确的;第一个规则不以句号结束)。

相反,写一个你可以直接在顶层使用的关系month_day_sign/3,如下所示:

?- month_day_sign(7,24,Sign).
Sign = leo.

这就是你通常与Prolog互动的方式。所以你正在利用顶层shell的功能。

一旦你掌握了这个,你可以做一些额外的界面。但不要走另一条路!


通过分离两个“操作”,X现已与horoscope(X,Y)断开连接...