我正在尝试使用this Prolog code底部的示例将this page移植到Racket中的Datalog。
#lang datalog
edge(a, b). edge(b, c). edge(c, d). edge(d, a).
path(X, Y) :- edge(X, Y).
path(X, Y) :- edge(X, Z), path(Z, Y).
path(X, Y)?
pathall(X,X,[]).
pathall(X,Y,[X,Z|L]):- arc(X,Z),pathall(Z,Y,L).
pathall(a, d)?
但它在最后一行代码[X,Z|L]
处出现此错误:
read: expected a `]' to close `['
如何在Datalog中表示列表?谢谢你的帮助。
答案 0 :(得分:3)
Datalog是Prolog的语法子集。
特别是,数据记录中支持列表等复合术语 。