Prolog初学者帮助获取当前时间
Prolog beginner help get current time
我正在修改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) 函数传递什么参数,我总是会收到错误消息。
我整晚都在尝试尝试方法,但我所做的一切都不起作用。
任何指针都会很棒!
谢谢
你根本不知道你的规则是什么意思。也许您正在尝试在出现术语 get_date_time_value(time,x)
的列表中获取当前时间:但是,该术语是对函数的调用吗? Prolog 不支持这一点:只需查看您为 get_date_time_value/2
predicate(不是 function)提供的子句以及您在那里看到的内容是对谓词的一系列调用。因此,您的规则可能必须在一个子句中给出,该子句仅在对您的 get_date_time_value/2
谓词的调用也成立时才成立,并且子句头和调用共享变量以在它们之间传递信息。
从结构上我猜应该是这样的:
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) .
不知道行不行。我没有测试。
我正在修改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) 函数传递什么参数,我总是会收到错误消息。 我整晚都在尝试尝试方法,但我所做的一切都不起作用。 任何指针都会很棒! 谢谢
你根本不知道你的规则是什么意思。也许您正在尝试在出现术语 get_date_time_value(time,x)
的列表中获取当前时间:但是,该术语是对函数的调用吗? Prolog 不支持这一点:只需查看您为 get_date_time_value/2
predicate(不是 function)提供的子句以及您在那里看到的内容是对谓词的一系列调用。因此,您的规则可能必须在一个子句中给出,该子句仅在对您的 get_date_time_value/2
谓词的调用也成立时才成立,并且子句头和调用共享变量以在它们之间传递信息。
从结构上我猜应该是这样的:
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) .
不知道行不行。我没有测试。