【发布时间】:2018-02-23 12:54:05
【问题描述】:
球拍的数据记录 (https://docs.racket-lang.org/datalog) 是否支持 'datalog with negation' ?
【问题讨论】:
球拍的数据记录 (https://docs.racket-lang.org/datalog) 是否支持 'datalog with negation' ?
【问题讨论】:
这是我能想到的最好的:
#lang racket
(require datalog)
(define prices (make-theory))
(datalog prices
(! (price a 1))
(! (price b 2))
(! (price c 3))
(! (price d -5))
(! (price e 5))
)
(define (notgt x y)
(not (> x y)
))
(datalog prices
(! (:- (notgt X Y)
(notgt X Y :- #t))
))
(datalog prices
(! (:- (al2 X)
(price X Y)
(notgt Y 2)
)))
(datalog prices (? (al2 X)))
问题是谓词必须全部返回真并且不能是复杂的,所以你不能在那里写像(not (= Y 2)) 这样的东西。看起来否定不在球拍的数据记录中,但我不是这方面的专家。在球拍中还有另一个数据记录实现:https://github.com/rntz/datafun 但我不知道这是否更好。
【讨论】: