Почему создание отношений в pyDatalog, кажется, дает мне неправильный ответ?

Я новичок в концепциях Datalog и изучаю его с помощью pyDatalog. Я экспериментирую с преобразователем единиц измерения. Итак, учитывая факты о том, сколько дюймов в метре, например, он должен быть в состоянии сказать мне, сколько метров в дюйме. Вот мой код:

from pyDatalog import pyDatalog
from pyDatalog.pyDatalog import create_terms as cterms

pyDatalog.create_terms('scale') # the long way of doing it
cterms('A, B, V')
scale['meter', 'inch'] = 39.3707787
scale[A, B] = 1/ scale[B, A]    
print(scale['inch', 'meter'] == V)

Почему программа не конвертирует дюймы в метры правильно? Он должен увидеть, что в метре 39,37 дюйма, и применить правило обратного преобразования, чтобы преобразовать его в другую сторону. Таким образом, он должен выводить 0,0234, но на самом деле выводит

V
----------
39.3707787

person blippy    schedule 13.09.2014    source источник
comment
Вероятно, лучший тег помог бы людям найти этот вопрос. Кажется, это не имеет отношения к логическому программированию, а к Python.   -  person Gábor Bakos    schedule 13.09.2014
comment
Я не согласен. На странице поддержки и сообщества по адресу ссылка указано: Пожалуйста, размещайте вопросы об использовании pyDatalog на StackOverflow (не забудьте добавить тег логического программирования внизу формы).   -  person blippy    schedule 13.09.2014
comment
Извините, я не знал об этом. Спасибо за исправление.   -  person Gábor Bakos    schedule 13.09.2014


Ответы (1)


Это ошибка. Исправление теперь выполняется в наборе изменений b1a5df9 и будет доступно в следующем выпуске. Тем временем вы можете применить набор изменений в своей системе.

person Pierre Carbonnelle    schedule 13.09.2014
comment
Превосходно. Спасибо. Я могу подтвердить, что исправление правильное. Затем я смог расширить свою программу, чтобы сказать масштаб ['миля', 'дюйм'] = 63360,0 и масштаб [A, B] = масштаб [A, C] * масштаб [C, B]. После этого программа смогла автоматически вычислить количество метров в миле. Очень аккуратный. Даталог рулит! - person blippy; 14.09.2014
comment
Спасибо. Я рада что тебе нравиться. - person Pierre Carbonnelle; 14.09.2014
comment
Мне удалось завершить программу преобразования единиц измерения и написать статья в блоге об этом. Я думаю, что это должно заинтересовать людей тем, что логическое программирование может выполнять вычисления проще, чем если бы приходилось писать код вручную. - person blippy; 14.09.2014
comment
Спасибо. Я ввел запись на Reddit Python, чтобы дать ссылку на ваш блог. - person Pierre Carbonnelle; 15.09.2014