#import #racket #datalog
#импорт #racket #журнал данных
Вопрос:
Возможно ли в Datalog Racket импортировать и использовать базу знаний, определенную в файле x, объявленном как «#lang datalog», в другой файл y, объявленный как «#lang racket»?
пример:
;; x.rkt
#lang datalog
parent(john, douglas).
;; y.rkt
#lang racket
(require datalog)
(require "x.rkt")
;;(datalog parent (? (X douglas))) DOES NOT WORK
Ответ №1:
Экспортируемая теория из #lang datalog
всегда именуется theory
, поэтому ваша y.rkt
должна быть:
#lang racket
(require datalog
"x.rkt")
(datalog theory (? (parent X douglas)))
Обратите внимание, что мы запрашиваем parent
таблицу, поэтому нам нужно указать ее как (? (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)))