Журнал данных ракетки - поддерживается ли '>'?
Предположим, код регистрации ракетки:
#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 ответ
Похоже, что это не поддерживается напрямую. Но вы можете определить свой собственный оператор.
#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).