Редактирование: Парадигмы программирования, 08 лекция (от 12 ноября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
- | * '''Аудиозапись:''' http://esyr.org/lections/audio/paradigms_2009_winter/paradigms_09_11_12.manmachine.ogg | ||
- | |||
Отсечение --- отсекает все развилки выше. | Отсечение --- отсекает все развилки выше. | ||
- | Отсечение --- | + | Отсечение --- чито процедурная штука. |
- | Отсечение позв. с одной стороны | + | Отсечение позв. с одной стороны эконопить время. С другой стороны... отсечение, в принципе, что такое: if then else, ... с другой стороны, отсечение штука нехорошая, поскольку убивает реверсивность предикатов --- не позв. исп. функция в разных предикатах. Вот, у нас был предикат member: |
member(E, [E|_]). | member(E, [E|_]). | ||
Строка 82: | Строка 80: | ||
... | ... | ||
- | Если not появлися в предикате, то | + | Если not появлися в предикате, то реверсится он если и будет, то плохо и/или неправильно. |
Что есть ещё: =\=, неравенство. Означает, что два терма неунифицируются. | Что есть ещё: =\=, неравенство. Означает, что два терма неунифицируются. | ||
Строка 205: | Строка 203: | ||
* assertZ(F) --- добавить факт F в БД. | * assertZ(F) --- добавить факт F в БД. | ||
В чём разница? Факты в предикате могут стоять в разном порядке имеет значение. assertA добавляет в начало, assertZ --- в конец, assert --- куда попало. | В чём разница? Факты в предикате могут стоять в разном порядке имеет значение. assertA добавляет в начало, assertZ --- в конец, assert --- куда попало. | ||
- | * retract(F) --- добавлять куда попало. | + | * retract(F) --- добавлять куда попало. |
БД это менять позволяет. Позволяет помнить что-то. Позволяет прочитать факты из файла. Можно сделать предикат, пишущий факты в файл. Можно таким обр. с помощью пролога сделать информационную систему. Понятно, что она значительно медленнее специализир. СУБД, но. возможно, быстрее самописных вещей. | БД это менять позволяет. Позволяет помнить что-то. Позволяет прочитать факты из файла. Можно сделать предикат, пишущий факты в файл. Можно таким обр. с помощью пролога сделать информационную систему. Понятно, что она значительно медленнее специализир. СУБД, но. возможно, быстрее самописных вещей. | ||
Строка 212: | Строка 210: | ||
След. лекция будет посв. языку рефал. | След. лекция будет посв. языку рефал. | ||
- | |||
- | <gallery widths="240" heights="150" perrow="3"> | ||
- | Image:Paradigm 091112 01.jpg|del_any, del_all. | ||
- | Image:Paradigm 091112 02.jpg|del_all, вариант с отсечением. | ||
- | Image:Paradigm 091112 03.jpg|Реверсивность append. | ||
- | Image:Paradigm 091112 04.jpg|Реверсивность append. | ||
- | Image:Paradigm 091112 05.jpg|Гипотеза о замкнутости универсума в Прологе. | ||
- | Image:Paradigm 091112 06.jpg|not. | ||
- | Image:Paradigm 091112 07.jpg|Вычисление длины списка. | ||
- | Image:Paradigm 091112 08.jpg|Вычисление длины списка: результат вызова. | ||
- | Image:Paradigm 091112 09.jpg|Вычисление длины списка, исправленная версия. | ||
- | Image:Paradigm 091112 10.jpg|Вычисление длины списка, исправленная версия: результат вызова. | ||
- | Image:Paradigm 091112 11.jpg|ten, первый вариант. | ||
- | Image:Paradigm 091112 12.jpg|naturals. | ||
- | Image:Paradigm 091112 13.jpg|ten, второй вариант. | ||
- | Image:Paradigm 091112 14.jpg|ten, финальный вариант. | ||
- | Image:Paradigm 091112 15.jpg|between. | ||
- | Image:Paradigm 091112 16.jpg|queens, часть первая. | ||
- | Image:Paradigm 091112 17.jpg|queens, часть вторая. | ||
- | Image:Paradigm 091112 18.jpg|queens, часть третья. | ||
- | Image:Paradigm 091112 19.jpg|queens, часть четвёртая. | ||
- | Image:Paradigm 091112 20.jpg|queens. | ||
- | Image:Paradigm 091112 21.jpg|assert, retract. | ||
- | </gallery> | ||
{{Парадигмы программирования}} | {{Парадигмы программирования}} | ||
{{Lection-stub}} | {{Lection-stub}} |