На встрече любителей Haskell вчера был просто аншлаг - 6 человек пришло. Ещё должен был быть американец, который из Швеции на велосипеде приехал, но его, видать, в музыкальных тусовках закрутило. Поговорили об архитектурной красоте Haskell, что в других языках надо гвоздями прибивать, здесь можно сделать на уровне библиотеки. Вообще, у Ромы даже презентация появилась (можно смотреть в браузере) про то, что такое объектно-ориентированное программирование с точки зрения Haskell. Выяснилось, что Рома с Женей продолжают разбирать "Mitchell. Foundations for programming languages, 1996 (MIT)" (pdf), причём делают это вдвоём, без оглядки на интеллектуальные меньшинства. Ещё было про стрелки, что в них можно встраивать ограничения, в отличие от монад.
Интересный лектор
Mar. 16th, 2013 06:11 pmСмотрю русский курс "Функциональное программирование" на примере языка Haskell. Интересные моменты:
лекция 1, 31:36
Программировать в функциональном стиле нельзя, жизнь такая. Я сам по нему только курс читаю, а пишу на Джава, говорит нам преподаватель Кубенский А.А..
лекция 2, часть 2
На 1:26:44 выглядит так, что лектор не слышал про сечения, не знает, как сделать из бинарной функции унарную, например любимую в ЖЖ (+1) и затем передать её в map.
Я, конечно, понимаю, что начинающим много не надо, но хотелось бы тщательне́й.
P.S. В лекции 3, ч. 2 (42:11) про сечения есть. К концу этой лекции вы уже сможете понимать выражения вида
Кстати, понравилось в лекциях Кубенского, что он активно использует foldr и показывает, фактически, как заменять этой функцией циклы.
лекция 4, часть 2 8:56 Лектор отмочил: "вещи, которые вставлены искусственно в функциональный язык программирования, но которые не являются по существу функциональными, в частности монады". Это как? До сих пор во всю использовал list comprehension и вдруг заявляет, что это не фукционально? Списки и Maybe, которые тоже монады, искусственны? Эх, Александр Александрович, надо было лучше в школе учиться. Ну и до этого Штирлиц тоже прокалывался, заявляя, что нельзя использовать правую свёртку, то есть foldr с бесконечными списками. А как раз foldr то и можно
лекция 1, 31:36
Программировать в функциональном стиле нельзя, жизнь такая. Я сам по нему только курс читаю, а пишу на Джава, говорит нам преподаватель Кубенский А.А..
лекция 2, часть 2
На 1:26:44 выглядит так, что лектор не слышал про сечения, не знает, как сделать из бинарной функции унарную, например любимую в ЖЖ (+1) и затем передать её в map.
Я, конечно, понимаю, что начинающим много не надо, но хотелось бы тщательне́й.
P.S. В лекции 3, ч. 2 (42:11) про сечения есть. К концу этой лекции вы уже сможете понимать выражения вида
searchList :: (Eq a) => a -> [a] -> Bool
searchList e = (foldr (||) False) . (map (== e))
Кстати, понравилось в лекциях Кубенского, что он активно использует foldr и показывает, фактически, как заменять этой функцией циклы.
лекция 4, часть 2 8:56 Лектор отмочил: "вещи, которые вставлены искусственно в функциональный язык программирования, но которые не являются по существу функциональными, в частности монады". Это как? До сих пор во всю использовал list comprehension и вдруг заявляет, что это не фукционально? Списки и Maybe, которые тоже монады, искусственны? Эх, Александр Александрович, надо было лучше в школе учиться. Ну и до этого Штирлиц тоже прокалывался, заявляя, что нельзя использовать правую свёртку, то есть foldr с бесконечными списками. А как раз foldr то и можно
foldr (:) [0] [1..]
Хакатон по Haskell в Одессе
Feb. 28th, 2013 02:56 pmНью-Йорк пока не собирается переезжать в Одессу, но международный хаскельный турнир Рома Чепляка здесь уже организовал. Хакатон или съезд хакеров для того, чтобы познакомиться и вместе поработать над проектами, написанными на языке Haskell пройдёт 3-5 мая (пятница-воскресенье). Уже заявлены следующие проекты:
- Cabal - установщик хаскелл-программ и библиотек, аналог пакетных менеджеров в дистрибутивах Linux. Один из важнейших инструментов в мире Haskell.
- Hakyll - генератор статических сайтов. С помощью него создан сайт Odessa Haskell user group, персональная страница Ивана Веселова.
- HasFix - проект Ромы, позволяющий автоматически вносить изменения в исходный код хаскелл-программ, не меняя стиля и форматирования, если разработчики библиотек внесли изменения в API. Достаточно будет вместе с библиотекой прислать файл-описание изменений. Видео-рассказ автора.
(no subject)
Dec. 23rd, 2012 12:33 amЗакончился курс по Haskell небольшим экзаменом-хакатоном на котором всем предложили написать игру "сапёр" за полтора часа. Я опоздал, так что у меня был всего час за который я наваял печать поля 10х10. Кошмарный результат зато достижение для человека, который научился использовать list comprehension и mapM_, а, главное, понимает теперь, как это работает.
Рома, который писал вместе со всеми 5 человеками, решившимися прийти на экзамен, показал в конце свой код. Естественно там был сапёр с ядерным двигателем на монадных трансформерах. Чтобы так писать надо учиться дальше.
Рома, который писал вместе со всеми 5 человеками, решившимися прийти на экзамен, показал в конце свой код. Естественно там был сапёр с ядерным двигателем на монадных трансформерах. Чтобы так писать надо учиться дальше.
(no subject)
Nov. 9th, 2012 03:41 amОдно горе омрачило этот день, пропустил встречу по Haskell. Ну, зато лекция в субботу будет, теперь в 9 утра. Темы и задания по этой же ссылке.
сентябрь, пора в школу
Sep. 23rd, 2012 01:24 amСубботний курс по Haskell на мехмате.
домашнее задание, настройка хаскель-платформы

В объявлении, как говорится для привлечения внимания, решили написать, что с 8:00 продвинутый курс, хотя на самом деле он такой же, как и в 10:30. На первую лекцию пришло 29 человек. Умеет Рома привлечь внимание.
домашнее задание, настройка хаскель-платформы



В объявлении, как говорится для привлечения внимания, решили написать, что с 8:00 продвинутый курс, хотя на самом деле он такой же, как и в 10:30. На первую лекцию пришло 29 человек. Умеет Рома привлечь внимание.
(no subject)
Jun. 10th, 2012 01:01 amСегодня Рома Чепляка собирал второй раз любителей Haskell в Одессе (OdHUG). Кроме меня пришёл ещё
bodigrim_new и это было прекрасно. Зачем нужна толпа, когда её пока занять нечем? Рома ещё не решил, что он хочет написать такого или сделать, вроде обучающего семинара, чтобы людям было интересно участвовать. А для начала нужна небольшая групка, которая чем-то интересным занята. Остальные наши, в основном слабоинициативные люди, начинают присоединяться потом.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Компилятор для sh
Oct. 15th, 2010 01:13 amЯзыку Unix shell уже почти 40 лет, им пользовался каждый, кто хоть раз заходил в командную строку, но до сих пор не существует ни одной свободной реализации компилятора для него. Да и несвободных всего, по-моему, одна штука. Так как Линукс сейчас встраивают куда угодно, в каждый телевизор, например, умеющий проигрывать кино с флешки, и интерпретаторы везде используются разные, то возник вопрос об ускорении скриптов инициализации и проверке их на соответствие стандарту. Как раз работа для компилятора, который сейчас пишется в Киеве и называется loker. Язык разработки -- хаскель. В субботу и воскресенье в Киеве пройдёт хакатон на котором этот и другие проекты будут представлены. Я уже еду.
Y комбинатор
Sep. 17th, 2010 03:59 pmЗавтра приезжает Рома Чепляка, чтобы прочесть лекцию "Рекурсивные функции и неподвижные точки". Согласно завету, что "на встречу со звездой надо приходить подготовленными", посмотрел эту страничку. Там в середине сказано, что только Y комбинатор обеспечивает возможность рекурсии. Вот оно что. Помнится Рома уже рассказывал на эту тему год назад, когда мы сидели на траве морского склона, но я тогда не очень понял. Теперь предоставляется второй шанс. А впрочем, что такое год по сравнению с почти столетием, когда Шёнфинкель из Одессы открыл комбинаторную логику.
Семинар по FPL
Jul. 18th, 2009 12:13 amСегодня провели выездное заседание - на пляже. Темой были полный частичный порядок и определение с его помощью оператора неподвижной точки fix. Как показал опыт, лучше всего всё самостоятельно доказывается, сидя прямо в воде. Как-никак водяное охлаждение процессора.
(no subject)
May. 31st, 2009 10:51 amПоездка в Киев на семинар прошла в напряжённом, но занимательном режиме. Приехав в 7:30, мы, как самые умные, не стали страдать в привокзальных забегаловках, а отъехав пару остановок на троллейбусе, с шиком расположились в пустой, утренней "Пузатой Хате". Потом наша компания, по наводке, рванула на другой конец Киева, чтобы попутешествовать в патентованном трёхмерном кинотеатре IMAX по Международной Космической Станции. Эффект присутствия был просто потрясающий. Ну буквально как будто кинотеатр оказался прямо в космосе. Кино закончилось за 45 минут до начала семинара, так что пришлось двигаться шагом, местами переходящим в бег, чтобы успеть, но мы успели.
На семинар пришло не менее 40 человек. Первым докладчиком был
nponeccop, однако он переоценил подготовленность публики и начал со слишком серьёзных результатов, так что пришлось Роме вернуться к азам и провести небольшой ликбез по основам. И он сделал это настолько зажигательно, рассказав про типизированное лямбда-исчисление по Карри, способ вывода термов по Хиндли-Милнеру, что, по-моему, представление об этом получили все, даже если до этого о предмете только слышали. Люди начали активно задавать вопросы, обсуждать и после доклада наградили выступающего заслуженными, бурными аплодисментами.
На семинар пришло не менее 40 человек. Первым докладчиком был
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
(no subject)
Apr. 2nd, 2009 01:19 amЗавтра очередной раз втроём собираемся на семинар по функциональному программированию, надо хоть упомянуть что было в прошлый раз. Если кратко, то так: eager evaluation, пример по нему, определение универсальной алгебры. Подробности при личной встрече.
UPD. На семинаре была задачка. Доказать, что если на множестве есть некая операция ∘ и существует элемент k такой, что
(k∘x)∘y = x, ∀x,y
то это множество состоит либо из одного, либо из бесконечного количества элементов.
UPD. На семинаре была задачка. Доказать, что если на множестве есть некая операция ∘ и существует элемент k такой, что
(k∘x)∘y = x, ∀x,y
то это множество состоит либо из одного, либо из бесконечного количества элементов.
Ещё 2 семинара позади
Mar. 9th, 2009 12:37 amВ прошлый четверг и в эту среду изучали по-порядку: введение рекурсии в наше типизированное исчисление с помощью оператора неподвижной точки fix; редукционные стратегии.
Семинар 02-19
Feb. 23rd, 2009 04:20 pmКратко, что было на семинаре в четверг. Всего нас было трое, так что в основном общались на близкие к основной темы. Начали с понятия подстановки и β-редукции, нормальной формы, то есть такой, когда уже никакие редукции дальше над выражением невозможны, дальше появились понятия слабой и сильной нормализации. Потом решили поупражняться, как же это всё делается руками и разобрали пример.
( пример )
На этом примере иллюстрируется понятие лексического (статического) способа разрешения переменных (lexical scoping), когда значение переменной задаётся ближайшим, самым первым определением. Это отличается от динамического разрешения (dynamic scoping) при котором существуют глобальные переменные и их значение определяется во время выполнения и ближайшим окружением. Это всё связано с понятием замыкания (closure) с помощью которого можно эмулировать объектно-ориентированное программирование.
( пример )
На этом примере иллюстрируется понятие лексического (статического) способа разрешения переменных (lexical scoping), когда значение переменной задаётся ближайшим, самым первым определением. Это отличается от динамического разрешения (dynamic scoping) при котором существуют глобальные переменные и их значение определяется во время выполнения и ближайшим окружением. Это всё связано с понятием замыкания (closure) с помощью которого можно эмулировать объектно-ориентированное программирование.
Второе занятие семинара
Feb. 12th, 2009 10:04 pmЗаписали формальные основы синтаксиса лямбда-исчисления, поговорили про понятие семантики, комбинаторы, их связь с парадоксом Рассела. Y-комбинатор, как один из видов парадокса Рассела и подозрительность бестипового лямбда-исчисления. Затем перешли к введению типов по Чёрчу, понятию контекста (есть такие, контекстные грамматики), аксиомам для выведения типов выражений. Я отвлёкся на попытку понять, как же из этих аксиом у кого-то всё-таки получается вывести тип и пропустил пару теорем - про единственность типа и независимость его от переименования переменных. Ещё, вроде, была теорема, что если у выражения удаётся вывести тип, то в нём нет свободных переменных. Теперь буду читать про это до следующего четверга.
(no subject)
Feb. 7th, 2009 02:58 amСегодня семинарчик открылся по формальным основам программирования. Как и в прошлом году, опять почти про хаскель, но более абстрактно, чтобы лучше понимать что и зачем. Узнал, что есть три вида семантики и существует ужасный парадокс
(\x.F(xx))(\x.F(xx)) = F((\x.F(xx))(\x.F(xx)))
то есть любая функция F должна иметь неподвижную точку (точку, в которой значение функции равно самой этой точке, либо такой же функции, программе, если мы над ними преобразования производим). А это несправедливо по отношению к функции отрицания, например.
Upd. Литература.
Барендрегт X. Ламбда-исчисление.
(\x.F(xx))(\x.F(xx)) = F((\x.F(xx))(\x.F(xx)))
то есть любая функция F должна иметь неподвижную точку (точку, в которой значение функции равно самой этой точке, либо такой же функции, программе, если мы над ними преобразования производим). А это несправедливо по отношению к функции отрицания, например.
Upd. Литература.
Барендрегт X. Ламбда-исчисление.
В частности, конструкции ламбда-исчисления воспитывают интуицию, позволяющую ориентироваться в семантике языков программирования. Эта книга написана для логиков, математиков, специалистов по информатике и философов.
Субботнее хобби
Mar. 23rd, 2008 02:07 amБыла суббота и был Хаскель. Всё-таки большое счастье учиться, когда это происходит добровольно. Зашли к монадам сегодня с другой стороны, с практической. Дело пошло веселее, потому что написать дома свою монаду я не сумел. Утешает только, что и остальные тоже. Подёргали за хвост хвостовую рекурсию и всякие системные вызовы, вроде переменных среды. Не, ну числа Фибоначчи, само собой, списки, которые строятся из самих себя. Я раньше думал, что лень это порок, оказалось большое преимущество. Хаскель, язык ещё ленивее меня. Вообще-то правильное название языка Хаскель - Моисей Исаевич, зря американцы его сокращённо называют. Конспектирую лекции на своём наладоннике и вот где, надо сказать, великая мощь текстового редактора Emacs проявляется. Пока Рома пишет на доске название функции, Emacs уже автодополнением её вставляет. Так что я даже тестовые примеры в интерпретаторе запустить успеваю. Всё-таки мучить лектора большое удовольствие, чувствуешь потом вдохновение целый день.
(no subject)
Mar. 16th, 2008 02:44 amСегодня присутствовал при том, как рождаются монады. Чистая детская радость от того, что хоть что-то понимаешь:)
Хаскель и Моисей
Feb. 23rd, 2008 08:26 pmИ вторая лекция по Хаскелю окзалась замечательной. Рома уже выложил темы предыдущей и фотку. В этот раз нас было всего шестеро, но зато компания всех знакомых. Казалось бы ходить на лекции анахронизм, когда в интернете всё самому прочитать можно, спросить, если что непонятно, но что-то есть в хорошей компании вдохновляющее. Я уже прямо загорелся перейти на Xmonad с KDE. И совсем неожиданное открытие. Оказывается Моисей Шейнфинкель, основатель комбинаторной логики, которую вслед за ним развил Хаскель Кёри, учился в этом же самом Одесском университете ровно 100 лет назад. Вот уж где мистика. 108-ю аудиторию надо назвать "аудиторией Шейнфинкеля", а то не повезло Моисею Исаевичу ни с именем ни с фамилией. Имя Хаскеля Кёри разобрали на 2 языка и одну функцию, а про Моисея Исаевича известно только, что зачем-то в 1939 году он вернулся в СССР, где и сгинул в Москве в 1942, да и то насчёт даты смерти сомневаются.