Как работает предложение not в Datomic?

Я пытаюсь найти широты, которые попадают между двумя входами. Мой запрос:

(defn- latlngs-within-new-bounds
  [db a w]
  (d/q '[:find ?lat
         :in $ ?a ?w
         :where
         [ ?e :location/lat ?lat]
         [(>= ?lat ?a)]
         (not
          [(>= ?lat ?w)])]
       db a w))

Моя ошибка:

3 Unhandled com.google.common.util.concurrent.UncheckedExecutionException
   java.lang.RuntimeException: Unable to resolve symbol: ?lat in this
   context

2 Caused by clojure.lang.Compiler$CompilerException

1 Caused by java.lang.RuntimeException
   Unable to resolve symbol: ?lat in this context

                 Util.java:  221  clojure.lang.Util/runtimeException

Будем признательны за любую помощь в понимании того, что не так с моим запросом. Бонусные баллы, если вы также можете использовать правила Datomic, чтобы выделить in-bounds часть каждой половины.


person tropicalmug    schedule 14.05.2015    source источник
comment
Чего вы пытаетесь добиться здесь: (>= :location/lat ?w)? :location/lat не кажется мне сравнимым с ?w   -  person guilespi    schedule 14.05.2015
comment
Ты прав. Я переформатировал это, чтобы сделать его более минимальным и действительным запросом.   -  person tropicalmug    schedule 14.05.2015
comment
Вы действительно выполняете этот запрос? Так как параметры a и w в строке :in должны быть ?a и ?w.   -  person guilespi    schedule 14.05.2015
comment
Да, я. Да, есть и другие структурные вещи, которые мне нужно исправить. Ошибка не относится ни к одному из этих параметров и остается такой же, когда я ее исправляю.   -  person tropicalmug    schedule 15.05.2015


Ответы (1)


Кажется, ваш код работает для меня с 0.9.5173 без атомов:

(defn- latlngs-within-new-bounds
  [db a w]
  (d/q '[:find ?lat
         :in $ ?a ?w
         :where
         [ ?e :location/lat ?lat]
         [(>= ?lat ?a)]
         (not
           [(>= ?lat ?w)])]
       db a w))

(latlngs-within-new-bounds
  [[1 :location/lat 1]
   [2 :location/lat 2]
   [3 :location/lat 3]
   [4 :location/lat 4]
   [4 :location/lat 5]]
  2 4)
=> #{[2] [3]}
person Anthony R.    schedule 18.05.2015
comment
Я удалил cider-nrepl из своего локального репозитория maven и перезапустил все, и теперь он работает. Спасибо за вашу помощь в отладке моих инструментов. - person tropicalmug; 19.05.2015