[Закрыть]
 
popoff.donetsk.ua
Чем выше у человека нравственное развитие, тем все менее его воодушевляет возможность кого-то уколоть.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - Error: 707 free variable in expression

Error: 707 free variable in expression

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Misha
Миша
Ноя, 2006
Сообщений: 5
Misha url://forum.message:1720
Error: 707 free variable in expression

Доброе время суток.

В методичке № 550 по прологу есть пример 4.8 «нахождение максимума» :

domains
  author, name, scool, museum = symbol
  year=integer
  list = year*
predicates
  pic(author, name, scool, year, museum)
  max(year, year, list)
  new(name)
clauses
  pic(Raphael, Sainted family, Italy, 1506, Hermitage).
  pic(Renuar, Lady in black, France, 1876, Hermitage).
  pic(Mone, Breakfast on the grass, France, 1866, GMII Pushkina).
  pic(Rembrandt, Flora, Holland, 1634, Hermitage).
  pic(Rembrandt, Poklonenie volhvov, Holland, 1632, Hermitage).

/*=========‡ Їа®бл==============*/
  max(Mmax, Mmax, []):- !.
  max(Mmax, MT, [H|Tail]):- H> MT, !, max(Mmax, H, Tail). //Каретка останавливается на H>MT       
  max(Mmax, MT, L):- !, max(Mmax, MT, Tail).
  
  new(N):- findall(YY, pic(_,_,Holland, YY,_), L),
           max(Y, -1000, L),pic(_, N,_, Y,_).

Подскажите, пожайлуста, что не так

popoff
Yuri
Июл, 2004
Сообщений: 941
popoff url://forum.message:1721

Error: 707 free variable in expression


Эта ошибка означает, что H или переменная MT не конкретизированы. Пролог может сравнивать на «больше»-«меньше» только конкретные значения. Неконкретизированные перменные так сравнивать нельзя.

А до этой ошибки у Вас других ошибок или предупреждений не возникает?

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Misha
Миша
Ноя, 2006
Сообщений: 5
Misha url://forum.message:1722

>>А до этой ошибки у Вас других ошибок или предупреждений не возникает?

Нет, не возникает.

~~~~~ 8 Дек 2006, 09:49 ~~~~~

В 08.12.06 09:42 поспешил с ответом  

max(Mmax, MT, L):- !, max(Mmax, MT, Tail). // На L и Tail - 420 Warning: The variable
//is only used once.

new(N):- findall(YY, pic(_,_,“Holland”, YY,_), L),
max(Y, -1000, L),pic(_, N,_, Y,_).

popoff
Yuri
Июл, 2004
Сообщений: 941
popoff url://forum.message:1723

Ошибка

Error: 707 free variable in expression


в данном случае возникает из-за того, что Вы не исправили это предупреждение:

420 Warning: The variable is only used once.


Исправьте это предупреждение и ошибка тоже исчезнет.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Misha
Миша
Ноя, 2006
Сообщений: 5
Misha url://forum.message:1724

>>Исправьте это предупреждение и ...

что-то никак не получается исправить

popoff
Yuri
Июл, 2004
Сообщений: 941
popoff url://forum.message:1725

А что Вы делаете, чтобы исправить? Какой получаете результат?

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Misha
Миша
Ноя, 2006
Сообщений: 5
Misha url://forum.message:1779

Yuri, спасибо за помощь.

Просмотрел:  

http://popoff.donetsk.ua/forum/flp/PrologPredupredzhdenie.html

после чего нашел и исправил ошибку:
 
max(Mmax, MT, [H|Tail]):- H> MT, !, max(Mmax, H, Tail).  
max(Mmax, MT, [_|Tail]):- !, max(Mmax, MT, Tail).


~~~~~ 25 Дек 2006, 09:00 ~~~~~

нашЁл

Это сообщение было отредактировано popoff 25.12.06 15:04.
popoff
Yuri
Июл, 2004
Сообщений: 941
popoff url://forum.message:1780

Раз уж Вы смогли исправить ишибку, то, думаю, Вам будет теперь полезно почитать:
http://popoff.donetsk.ua/text/work/prg/goto/min.html

Да, второе отсечение излишне. Оно не приводит ни к экономии памяти, ни к ускорению работы программы, ни к получению правильного результата.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Misha
Миша
Ноя, 2006
Сообщений: 5
Misha url://forum.message:1788

http://popoff.donetsk.ua/text/work/prg/goto/min.html

Спасибо, прочитаю.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Гинеколог, стоматолог, психотерапевт в Донецке