2013-09-19 2 views
0

Следующий кодПролог `is` арифметика неудачу странно

itD(Start, End, Distance, Max) :- 
    Distance < Max, 
    newDistance is Distance+1, 
    itD(Start, End, newDistance, Max). 

дает мне очень странно, не в состоянии.

2 2 Call: 0<15 ? 
    2 2 Exit: 0<15 ? 
    3 2 Call: newDistance is 0+1 ? 
    3 2 Fail: newDistance is 0+1 ? 

Который я действительно не понимаю. Так как я использую действительно базовую арифметику.

| ?- Distance is 1, NewDistance is Distance+1. 
    Distance = 1 
    NewDistance = 2 
    yes 

Как вы можете видеть, у меня нет проблем с тем, что когда-либо пишут ту же операцию в консоли.

Я был бы очень рад, если бы кто-то помог мне понять эту странную арифметическую проблему.

ответ

2

Только после того, как я разместил это, я понял, что переменные в прологе должны начинаться с большой буквы, я думаю, это довольно распространенная ошибка для кого-то нового в Prolog.

Надеюсь, что это поможет кому-то в будущем.

+1

Действительно, переменные начинаются с заглавной буквы или символа подчеркивания. Нижний регистр 'newDistance' - это атом; вы можете использовать 'NewDistance' и т. д. – hardmath

Смежные вопросы