我试图让用户输入他们的生日,所以我可以告诉他们他们的星座。但是,我在实际的生日和月份遇到了麻烦。有人可以帮帮我吗?我已经尝试将读取分成不同的函子,但我一直在收到错误。我结合两次读取时得到的错误是"语法错误:操作员优先级冲突。"我将两个读取分开时得到的错误是"错误:=:= / 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).
答案 0 :(得分:3)
作为初学者,不要那样开始。 (并且你的第一个程序在语法上是不正确的;第一个规则不以句号结束)。
相反,写一个你可以直接在顶层使用的关系month_day_sign/3
,如下所示:
?- month_day_sign(7,24,Sign).
Sign = leo.
这就是你通常与Prolog互动的方式。所以你正在利用顶层shell的功能。
一旦你掌握了这个,你可以做一些额外的界面。但不要走另一条路!
通过分离两个“操作”,X
现已与horoscope(X,Y)
断开连接...