Лекция №2 в курсе "Программирование на Python ", осень 2018 Преподаватель курса: Алексей Александрович Кладов Страница лекции на сайте CS центра: bit.ly/2I5ir1W Видео курса по порядку: bit.ly/2Pnw2o7
Обожаю лекции Алексея) Я: *пришел посмотреть определение функции для того, чтобы объяснить эту концепцию своему младшему брату 11 лет* Алексей: - Чтобы нам понять, что такое функция на самом деле, нам надо посмотреть байт-код.
там в функции unique в строке seen = seen or set() лучше было б seen привести к сету, чтоб пользователь мог передавать или кортеж или список, иначе ему явно надо будет передавать сет
4:29 Ошибка в коде... нужно в конце написать if not found: print('Not found'), так как если значение не найдется found останется False! а в вашем коде если найдется то сработает два принта и найдено и не найдено)))))
Алексей Александрович, а с чего вы взяли что у вас функция min реализована через моноид? Для чисел определено только 2 моноида и ни один из них у вас не использован. Ведь бесконечность единицей моноида являться не может. Я бы вам рекомендовал прочитать статью про моноиды в первом номере журнале "Практика функционального программирования" за 2009 год. Там всё доходчиво написано.
Числа + бесконечность c операцией min моноид: min(min(a, b), c) == min(a, min(b, c)), min(oo, a) = min(a, oo) = a. Это частный случай примера "every bounded semilattice is an idempotent commutative monoid" из en.wikipedia.org/wiki/Monoid#Examples.
Aleksey Kladov Вы не совсем правы. Дело в том что inf не является экземпляром класса int (да и строго говоря бесконечность это не число, а математическая абстракция) т.е. inf не принадлежит множеству значений передаваемых в вашу функцию. По этому и назвать эту конструкцию моноидом нельзя.