Вспомнить решил уникальные и самобытные языки. Наткнулся на ваш канал, ностальгия накрыла меня... P. S. А на Prolog можно написать программу, которая считает что-то. Например хрестоматийные факториалы и числа Фибоначчи, как минимум?
Приятной ностальгии ))) Считать можно всё, и несложно. Когда рекурсию разбирал, было всякое похожее вроде: e.kspu.ru/course/view.php?id=2387#section-28 ))) Гостем пускать должно Для примера - у нас есть поразительно офигенный физик в ИМФИ (Якушевич Валерий Иванович, ему за 60 уже), и он прямо жёсткий железячник, но пишет вообще всё на VisualProlog. Так что можно.
Я не знаю Haskell, могу только гадать))). Судя по habr.com/ru/post/152889/#recursive-type , Хаскель тоже автоматически делает рекурсию при вызове, как и Пролог. У Пролога только есть точки отката для управления перебором по дереву, но я Хаскель совсем не трогал и дальше сравнивать не квалифицирован. Спросил товарища, она хорошо знает Пролог и хотела изучить Хаскель. Ответит, напишу.
Подумал немного, есть один вариант ответа ещё: Хаскель идёт по шаблонам, и, когда шаблон совпадает по числу/типу аргументов, вычисляется и возвращается результат. В прологе смотрят только число аргументов, и всё. Часто бывает так, что некоторый аргумент слева вообще не известен, и, после входа в правую часть и попытки согласовать или получается это сделать (тогда, и только после этого, неизвестная часть слева примет, наконец, какое-то значение). И, если не примет, или надо будет найти все ответы, поиск будет продолжен дальше с заходом в следующие шаблоны, даже если были попадания выше. P.S. товарищ ещё до хаскеля не дошёл, помочь не смогла.
Здравствуйте! Подскажите, пожалуйста, нет ли описания логики работы пролога? То есть каким образом при обработке запроса происходит обработка графа, как проверяются сложные запросы и тд. Заранее благодарю!
Есть книга Адаменко и Кучукова: www.studmed.ru/adamenko-a-kuchukov-a-logicheskoe-programmirovanie-i-visual-prolog_497a98371ed.html 11я глава вроде про это
@@peterkoloskij488 в книге есть ещё где-то глава, где показано, как переписать на прологе все ключевые конструкции обычных языков - условный оператор, цикл, функцию. Сильно помогает голову настроить на пролог и понять механику исполнения.
ИЛИ там просто есть ))) Если хотите проверить A || B, то пишете (A ; B). Пример: --- a. b :- fail. c :- fail. ?- (a ; b), writeln('ok'). --- Напишет "ок". И НЕ там тоже есть ))), но оно применяется только к тому факту, который можно найти и доказать. Это вы почувствуете в ходе практики. Сейчас спешу, но примерно так вспоминается: goal :- not(A), ... не получится, надо сперва найти A, а потом делать NOT: goal :- , not (A), .
Надо, но эти видосы уже шли "в ночь" - решил, что или запишу весь цикл как смогу (до рекурсии и списков), или брошу - на семинарах уже глянули и так. А в следущем году, особенно если опять нагрузка изменится, надо, правда, эмодзи жахнуть )))
У меня его нет (он платный, да и у меня линукс). Могу ответить на вопросы, но без спойлеров - только подтолкнуть. Преподаватель не просто так вам задания дают, и их надо думать лично, иначе никак - хоть и тяжело это :-\ Держитесь, пишите 🤝
Вспомнить решил уникальные и самобытные языки. Наткнулся на ваш канал, ностальгия накрыла меня...
P. S. А на Prolog можно написать программу, которая считает что-то. Например хрестоматийные факториалы и числа Фибоначчи, как минимум?
Приятной ностальгии )))
Считать можно всё, и несложно. Когда рекурсию разбирал, было всякое похожее вроде: e.kspu.ru/course/view.php?id=2387#section-28 ))) Гостем пускать должно
Для примера - у нас есть поразительно офигенный физик в ИМФИ (Якушевич Валерий Иванович, ему за 60 уже), и он прямо жёсткий железячник, но пишет вообще всё на VisualProlog. Так что можно.
Чем это отличается от pattern matching в Haskell?
Я не знаю Haskell, могу только гадать))).
Судя по habr.com/ru/post/152889/#recursive-type , Хаскель тоже автоматически делает рекурсию при вызове, как и Пролог. У Пролога только есть точки отката для управления перебором по дереву, но я Хаскель совсем не трогал и дальше сравнивать не квалифицирован. Спросил товарища, она хорошо знает Пролог и хотела изучить Хаскель. Ответит, напишу.
Подумал немного, есть один вариант ответа ещё: Хаскель идёт по шаблонам, и, когда шаблон совпадает по числу/типу аргументов, вычисляется и возвращается результат.
В прологе смотрят только число аргументов, и всё. Часто бывает так, что некоторый аргумент слева вообще не известен, и, после входа в правую часть и попытки согласовать или получается это сделать (тогда, и только после этого, неизвестная часть слева примет, наконец, какое-то значение). И, если не примет, или надо будет найти все ответы, поиск будет продолжен дальше с заходом в следующие шаблоны, даже если были попадания выше.
P.S. товарищ ещё до хаскеля не дошёл, помочь не смогла.
Здравствуйте!
Подскажите, пожалуйста, нет ли описания логики работы пролога? То есть каким образом при обработке запроса происходит обработка графа, как проверяются сложные запросы и тд.
Заранее благодарю!
Есть книга Адаменко и Кучукова:
www.studmed.ru/adamenko-a-kuchukov-a-logicheskoe-programmirovanie-i-visual-prolog_497a98371ed.html
11я глава вроде про это
@@DmitryRomanov Сердечно благодарю!)
@@peterkoloskij488 в книге есть ещё где-то глава, где показано, как переписать на прологе все ключевые конструкции обычных языков - условный оператор, цикл, функцию. Сильно помогает голову настроить на пролог и понять механику исполнения.
Скажите, а сильно ли мешает отсутствие ИЛИ и НЕ в Прологе?
ИЛИ там просто есть )))
Если хотите проверить A || B, то пишете (A ; B).
Пример:
---
a.
b :- fail.
c :- fail.
?- (a ; b), writeln('ok').
---
Напишет "ок".
И НЕ там тоже есть ))), но оно применяется только к тому факту, который можно найти и доказать. Это вы почувствуете в ходе практики. Сейчас спешу, но примерно так вспоминается:
goal :- not(A), ... не получится, надо сперва найти A, а потом делать NOT:
goal :- , not (A), .
Если интерпретатор поддерживает юникод, можно попробовать эмодзи использовать в названиях :)
Надо, но эти видосы уже шли "в ночь" - решил, что или запишу весь цикл как смогу (до рекурсии и списков), или брошу - на семинарах уже глянули и так.
А в следущем году, особенно если опять нагрузка изменится, надо, правда, эмодзи жахнуть )))
Можете помочь с лабораторным работой по visual prolog 5.2?
У меня его нет (он платный, да и у меня линукс). Могу ответить на вопросы, но без спойлеров - только подтолкнуть. Преподаватель не просто так вам задания дают, и их надо думать лично, иначе никак - хоть и тяжело это :-\
Держитесь, пишите 🤝
?
Первое знакомство с Прологом или видео где-то затупило ))) ?