我想知道是否有任何方法可以使用Prolog进行流处理,也就是说,一种响应式编程方式,或者至少让查询在不断更新(有效地成为一个流)的知识库上运行,并持续输出推理结果?
是否有任何在流行的“Prologs”(如SWI-Prolog)中实现的方法?
我想知道是否有任何方法可以使用Prolog进行流处理,也就是说,一种响应式编程方式,或者至少让查询在不断更新(有效地成为一个流)的知识库上运行,并持续输出推理结果?
是否有任何在流行的“Prologs”(如SWI-Prolog)中实现的方法?
bricks
示例:
https://github.com/LogtalkDotOrg/logtalk3/tree/master/examples/bricks
首先运行此示例,然后查看其代码,应该能让您了解使用系统范围内的事件和监视器可以做什么。/* File: win_html_write_test.pl
Author: Carlo,,,
Created: Aug 27 2013
Purpose: example usage win_html_write/1
*/
:- module(win_html_write_test,
[dir2list/1
]).
:- [library(http/html_write)].
:- [library(dirtree)].
dir2list(Path) :-
dirtree(Path, DirTree),
% sortree(compare_by_attr(name), DirTree, Sorted), !,
DirTree = Sorted,
phrase(html([\css,
\logo,
hr([]),
ul(\dirtree2html(Sorted, [])),
br([])]), Tokens),
with_output_to(atom(X), print_html(Tokens)),
win_html_write(X),
dump_page_to_debug(X).
css --> html(style(type='text/css',
['.size{color:blue;}'
])).
logo --> html(img([src=':/swipl.png'],[])).
dirtree2html(element(dir, A, S), Parents) -->
html(li([\elem2html(A),
ul(\elements2html(S, [A|Parents]))])).
dirtree2html(element(file, A, []), _Parents) -->
html(li(\elem2html(A))).
elem2html(A) -->
{memberchk(name=N, A),
memberchk(size=S, A)
},
html([span([class=name], N), ' : ', span([class=size], S)]).
elements2html([E|Es], Parents) -->
dirtree2html(E, Parents),
elements2html(Es, Parents).
elements2html([], _Parents) --> [].
dump_page_to_debug(X) :-
open('page_to_debug.html', write, S),
format(S, '<html>~n~s~n</html>~n', [X]),
close(S).
?- pack_install(dirtree).
dir2list(Path) :- dirtree(Path, DirTreeT), assign_path(DirTreeT, DirTree), ...
dirtree2html(element(file, A, []), _Parents) --> html(li(\file2html(A))).
file2html(A) --> {memberchk(name=N, A), memberchk(path=P, A), memberchk(size=S, A) }, html([span([class=name], [a([href='writeln(editing(\'~s\')), edit(\'~s\')'-[N,P]], N)] ), ' : ', span([class=size], S)]).现在文件名是可点击的,如果需要,可以编写消息并进行编辑:图片
https://github.com/aartikis/RTEC
RTEC是一种针对流推理进行优化的开源事件演算方言。它是用Prolog编写的,并在YAP 6.2下进行了测试。https://www.swi-prolog.org/pack/file_details/prologmud_I7/prolog/ec_planner/RTEC/README.md
这大概依赖于:https://www.swi-prolog.org/pldoc/doc/_SWI_/library/dialect/yap.pl