2017-09-13 11 views
0

this pageの下部の例を使用して、this Prolog codeをラケットの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 `[' 

私はデータログにリストを表現するにはどうすればよいですか?ご協力いただきありがとうございます。

答えて

2

Datalogは、Prologの構文サブセットです。

特に、のような化合物の用語リストは、Datalogでではありません。です。

+0

したがって、このような作業にはProlog iteselfを使用することが最善の方法です。 Prologコードを受け取る他のScheme?またはハスケル? – rnso

+2

これらの質問の文脈で私の個人的な推奨は、Prologを直接使用することです。これは本格的なプログラミング言語であり、データベースも組み込まれています。真実に直接ジャンプしてみませんか? – mat

関連する問題