|
| Страницы: [1] | << Новый | Старый >> | Ответ не возможен |
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
| Автор | Сообщение |
| Krion Александр Мар, 2006 Сообщений: 26 | Krion url://forum.message:1278 Пролог. Предупредждение 420 - The variable only used once Добрый день! Кто знает помогите разобраться почему возникает предупреждение и что она означает: 1 inters(list,list,list) 1 inters(list,list,list) |
| 15.04.06 19:40 | URL сообщения | Приват | Инфо об авторе |
| popoff Yuri Июл, 2004 Сообщений: 1078 | popoff url://forum.message:1283 В Прологе переменная, использованная в правиле означает фактически следующее: «Здесь - такое же значение, как и там.» Если Вы используете переменную только один раз, то фактически Вы говорите: «Здесь - такое же значение как и где-то, только никто не знает где.» Напишите для каждого предиката его процедурное и декларативное понимание. После этого для выбора значений между константой, именованной переменной и анонимной переменной, пользуйтесь следующей эвристикой: 1. Если значение известно, значит нужно поставить константу - то самое значение, которое известно. 2. Если значение не известно, то нужно ставить переменную: 2.1. Если значение Вас интересует, то нужно ставить именованную переменную. 2.2. Если значение Вас НЕ интересует, то нужно ставить анонимную переменную. Рассмотрим, к примеру, строчку 8. Она декларативно озвучивается так: «Если первый список пуст, то его пересечение с любым списком является пустым списком.» Зададим вопросы по каждому аргументу: 1. Первый список известен? Да, известен: у нас в декларативном понимании явно указано: «если первый список пуст». Значит, в качестве первого аргумента ставим константу - пустой список. 2. Второй список известен? Нет, не известен: у нас в декларативном понимании явно сказано: «с любым списком». Он нас интересует? Нет, он нас не интересует, потому что в декларативном понимании нигде не указано на то, что от него зависит или хотим ли мы его узнать. Скорее наоборот, из декларативного понимания следует: «не важно, какой второй список - всё равно результат будет пустым списком». Поэтому, на втором месте - анонимная переменная. 3. Список - результат известен? Да, известен: у нас в декларативном понимании явно сказано: «является пустым списком». Значит, ставим константу - пустой список. Вашу десятую строчку, например, декларативно можно было бы озвучить так: «(в остальных случаях) пересечение первого и второго списков - такое же, как и пересечение хвоста первого списка и всего второго списка.» 1,2. это голова и хвост первого списка. Думаю, рассуждения для них Вы сможете построить самостоятельно. 3. Второй список. Он нам известен? Нет, он не известен: в нашем декларативном понимании не сказано ни о каком конкретном значении этого списка. Он нас интересует? Да, он нас интересует: в нашем декларативном понимании сказано, что для нахождения списка-результата нам нужно знать весь второй список. 4. Список-результат. Он нам известен? Нет, он не известен: в декларативном понимании ничего не сказано, о том, какое именно конкретное значение будет принимать этот список. Он нас интересует? Да, он нас интересует: исходя из нашего декларативного понимания, именно список-результат мы и хотим найти. 5. Первый список в рекурсивном вызове. Он нам известен? Нет, конкретного значения в декларативном понимании нет. Он нас интересует? Да, знание этого списка нам необходимо для того, чтобы найти результат. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
| 15.04.06 23:26 | URL сообщения | Приват | Инфо об авторе |
| Krion Александр Мар, 2006 Сообщений: 26 | Krion url://forum.message:1285 Огромное спасибо за то что объяснили что к чему и почему ошибка возникает, теперь у меня есть не только рабочая программа без ошибки, но теперь я ещё и знаю почему она была. elem(X,[X|_]). /* предикат принадлежности элемента списку*/ |
| 16.04.06 00:07 | URL сообщения | Приват | Инфо об авторе |
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
| Страницы: [1] | << Новый | Старый >> | Ответ не возможен |
| Вход |
Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт. [Ссылки] Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище! (c) Yuri Popoff, 2004 - 2008, popoff.donetsk.ua, style.donetsk.ua |
|