在 Racket 中导入 Datalog 知识库
Import a Datalog knowledge base in Racket
是否可以在 Datalog Racket 中将声明为“#lang datalog”的文件 x 中定义的知识库导入和使用到另一个声明为“#lang racket”的文件 y 中?
例如:
;; x.rkt
#lang datalog
parent(john, douglas).
;; y.rkt
#lang racket
(require datalog)
(require "x.rkt")
;;(datalog parent (? (X douglas))) DOES NOT WORK
从 #lang datalog
导出的理论始终命名为 theory
,因此您的 y.rkt
应该是:
#lang racket
(require datalog
"x.rkt")
(datalog theory (? (parent X douglas)))
注意我们查询的是parent
table,所以需要指定为(? (parent X douglas))
。 (? (X douglas))
不正确。
最后,如果你想重命名从x.rkt
导出的理论,你可以使用rename-in
:
#lang racket
(require datalog
(rename-in "x.rkt" [theory my-thy]))
(datalog my-thy (? (parent X douglas)))
是否可以在 Datalog Racket 中将声明为“#lang datalog”的文件 x 中定义的知识库导入和使用到另一个声明为“#lang racket”的文件 y 中?
例如:
;; x.rkt
#lang datalog
parent(john, douglas).
;; y.rkt
#lang racket
(require datalog)
(require "x.rkt")
;;(datalog parent (? (X douglas))) DOES NOT WORK
从 #lang datalog
导出的理论始终命名为 theory
,因此您的 y.rkt
应该是:
#lang racket
(require datalog
"x.rkt")
(datalog theory (? (parent X douglas)))
注意我们查询的是parent
table,所以需要指定为(? (parent X douglas))
。 (? (X douglas))
不正确。
最后,如果你想重命名从x.rkt
导出的理论,你可以使用rename-in
:
#lang racket
(require datalog
(rename-in "x.rkt" [theory my-thy]))
(datalog my-thy (? (parent X douglas)))