【问题标题】:Import a Datalog knowledge base in Racket在 Racket 中导入 Datalog 知识库
【发布时间】:2020-10-27 12:59:37
【问题描述】:

是否可以在 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

【问题讨论】:

    标签: import racket datalog


    【解决方案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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多