Core.logic пропускает решение с fd/*, когда домен (правильный, целочисленный, неотрицательный) задан для умножаемого lvar, работает без домена

fd/*, кажется, имеет проблемы с обработкой отрицательных чисел, даже если они являются только константами. И это работает во многих ситуациях. Что я делаю неправильно?

(require '[clojure.core.logic :as l]
         '[clojure.core.logic.fd :as fd])

; Works, returns (1):
(l/run* [q] 
        (fd/* -1 q -1))

; Works, returns (1):
(l/run* [q] 
        (fd/in q (fd/domain 1))
        (fd/* -1 q -1))

; Fails, returns ():
(l/run* [q] 
        (fd/in q (fd/domain 0 1))
        (fd/* -1 q -1))

person Filip    schedule 28.04.2014    source источник
comment
Хм. Взглянуть. Та же проблема, если я сделаю это (fd/* 1 q -1), а затем укажу отрицательные значения домена. fd/interval разделяет ту же проблему. К сожалению, сейчас 2230 год, и мои возможности поиска core.logic.fd/*c прямо сейчас ограничены. Я смотрю на ограничения, которые он выводит, и есть много -ves, о которых говорят. Может быть, завтра еще один взгляд, а затем, возможно, один, чтобы поднять его как ошибку ... Я подозреваю, что однозначный домен работает из-за singleton-dom? проверить ярлыки вещей.   -  person pete23    schedule 05.05.2014
comment
На самом деле я думаю, что это дубликат stackoverflow.com/questions/13195493/ - моя догадка об отрицательных ограничениях оказалась верной. Может быть, я покопаюсь и посмотрю, смогу ли я завтра собрать патч.   -  person pete23    schedule 05.05.2014
comment
Не помечать как обман - тот относится к отрицательным доменам, этот - к отрицательным результатам. Та же первопричина, то же нереализованное поведение, другое выражение, которое стоит поискать.   -  person pete23    schedule 05.05.2014