Введение в Prolog
Хочу такой туториал, с которым все понятно, куда коней запрягать. А его нет. Напишу тогда свой.
Итак, Пролог это не обычный язык программирования. Самый лучший пример использования это решение логической задачи типа
5 разных человек в 5 разных домах разного цвета, курят 5 разных марок сигарет, выращивают 5 разных видов животных, пьют 5 разных видов напитков. Вопрос: кто выращивает рыбок?
Подсказки:
- Норвежец живет в первом доме.
- Англичанин живет в красном доме.
- Зеленый дом находится левее белого.
- Датчанин пьет чай.
- Тот, кто курит Rothmans, живет рядом с тем, кто
- выращивает кошек.
- Тот, кто живет в желтом доме, курит Dunhill.
- Немец курит Marlboro.
- Тот, кто живет в центре, пьет молоко.
- Сосед того, кто курит Rothmans, пьет воду.
- Тот, кто курит Pall Mall, выращивает птиц.
- Швед выращивает собак.
- Норвежец живет рядом с синим домом.
- Тот, кто выращивает лошадей, живет в синем доме.
- Тот, кто курит Philip Morris, пьет пиво.
- В зеленом доме пьют кофе.
Для решения задач такого типа очень подходит Prolog.
Язык оперирует всего тремя понятиями, это Факт (Fact), Правило (Rule) и Запрос (Query).
Факт.
Как выглядит факт? Простое утверждение, без условий.
Пример: Норвежец живет в первом доме.
Правило.
Правило это когда в выражении есть неизвестное и его нужно вычислить.
Пример: Зеленый дом находится левее белого.
Так как неизвестно, где находится белый дом, это утверждение нужно вычислить. Это и есть правило.
Запрос.
Пример: Кто выращивает рыбок?
Здесь все понятно, система должна найти ответ на запрос используя факты и правила.
Написание программы на прологе и есть нахождение ответа на запрос используя для этого правила и факты. Создание таких правил и фактов и есть написание программы.
Где еще используется Prolog? В языке запросов Datalog в Datomic и Cascalog на Hadoop.