【问题标题】:racket datalog - datalog with negation?球拍数据记录 - 带有否定的数据记录?
【发布时间】:2018-02-23 12:54:05
【问题描述】:

球拍的数据记录 (https://docs.racket-lang.org/datalog) 是否支持 'datalog with negation' ?

【问题讨论】:

    标签: racket datalog


    【解决方案1】:

    这是我能想到的最好的:

    #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 但我不知道这是否更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多