Prolog初学者求助获取当前时间

标签 prolog artificial-intelligence swi-prolog

我正在修改 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/

相关文章:

list - 在序言中转换为点表示法

c# - 我应该使用什么类型的算法?

prolog - SWI-Prolog:当 "Non-module file"已加载到某些模块时,无权加载源)

python - 为什么在使用 Deep Q 学习时会弹出此错误?

http - Prolog HTTP Dispatch句柄封装

prolog - 如何在 SWI-Prolog 中跟踪内置的 append/3?

prolog - 如何以更快的方式将文件查阅到 swi-prolog

prolog:如何用 global_cardinality 判断列表至少有 N 个等于 M 的元素(M,N 是整数)

prolog - 删除列表中项目的所有实例 :Prolog

machine-learning - 如何训练神经网络来打乒乓球游戏?