球拍数据记录 - 是'>'支持的?

时间:2018-02-23 12:51:00

标签: racket datalog

假设球拍的数据记录代码:

#lang datalog

price(a, 1).
a1(A) :- price(A, Price), Price > 0.
a1(A)?

我希望结果:

a1(a)

我收到错误:

prices_datalog.rkt:4:32: datalog: Unexpected token IDENTIFIER in: ">"

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来它没有直接支持。但您可以定义自己的运算符。

#lang datalog/sexp

(! (:- (gt X Y)
       (> X Y :- #t)))  

(! (price a 1))
(! (price b 2))
(! (price c 3))
(! (price d 4))

(! (:- (a2 X)
       (price X Y)
       (gt Y 2)))

(? (a2 X))

;; outputs
a2(c).
a2(d).