0
我是using a predicate在prolog程序shell中读取连续提示中的一些值,并且我希望用户在询问输入时能够获得帮助消息。该方案将是:序言:在shell提示符下显示帮助
- 请输入
- 如果
input = 'help'
,显示帮助信息,并要求对同一输入再次 - 如果
input /= 'help'
,分配Value
并成功留下
我”什么至今已完成:
ask_input(Question, Value) :-
write(Question), % Please enter ... :
read(ReadValue),
(ReadValue = 'help' ->
write('Help message...'),
ask_input(Question, Value)
; Value = ReadValue
).
显然,t他上面的代码不起作用。它会在条件内的ask_input
上失败。
我会写'ask_question2(问题,帮助的NewValue): - '然后删除'ReadValue =“help''线。 –
请注意,在backtracking时,ask_question2/3的第二个子句将成功ReadValue ='help'。 – gusbro
更多我想,我认为这种方法可以被简化得更多,并且通过接受输入然后处理它可以避免这个问题。 '帮助'功能只是一个处理程序。默认处理程序将显示错误,并可能显示“帮助”消息。构建你的输入循环,而不是试图处理无效输入和更深层次的帮助。 –