0

我正在尝试将此 Prolog 代码移植到 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 中表示列表?谢谢你的帮助。

4

1 回答 1

3

Datalog 是Prolog的语法子集。

特别是,Datalog不支持列表等复合术语。

于 2017-09-13T05:28:38.180 回答