我正在修改 Eliza 程序 http://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/eliza.pl 当用户询问时尝试让它打印系统时间 - 现在几点了? 经过几个小时的阅读手册后,我的 get_date_time_value() 函数开始工作。 如
get_date_time_value(Key, Value) :-
get_time(Stamp),
stamp_date_time(Stamp, DateTime, local),
date_time_value(Key, DateTime, Value).
但是我不知道如何从定义为
的规则中调用此函数rules([[time,0],[
[1,[_],0,
[please,do,not,get_date_time_value(time,x),.],
['I',dont,know,the,time,.]]]]).
是的,这是一项家庭作业,对于专家来说这可能听起来很愚蠢,但我对 Prolog 编程确实很陌生,尽管我在面向对象和函数式编程方面有相当多的经验。 无论我传递给 get_date_time_value(time,X) 函数什么参数,我总是会收到错误。 我花了一整夜的时间尝试一种尝试方法,但我所做的一切都不起作用。 任何指点都会很棒! 谢谢
最佳答案
从结构上我猜它应该是这样的:
rules([[time,0],[
[1,[_],0,
[it,is,HourLiteral,oclock,.],
['I',dont,know,the,time,.]]]]) :- get_date_time_value(hour, HourNumber), number_codes(HourNumber, HourString), atom_string(HourLiteral, HourString) .
不知道有没有效果。我没有测试过。
关于Prolog初学者求助获取当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079076/