数据记录代码在球拍中不起作用

Datalog code not working in Racket

我正在尝试移植 this Prolog code to Datalog in Racket, using example at bottom of this page

#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 中表示列表?感谢您的帮助。

Datalog 是 Prolog 的语法子集

特别是,Datalog 支持列表 等复合词。