Одним вечером я наткнулся на статью о реализации одномерного клеточного автомата с помощью комонад, однако материал неполон и немного устарел, в связи с чем решил написать русскоязычную адаптацию (заодно рассмотрев двумерные клеточные автоматы на примере Game of Life)
Рубрика «haskell» - 14
Клеточные автоматы с помощью комонад
2014-06-06 в 12:21, admin, рубрики: game of life, haskell, жизнь, клеточный автомат, функциональное программирование, метки: game of life, haskell, жизнь, клеточный автоматПродолжаем изучать квантовые вычисления: алгоритм Дойча-Йожи
2014-05-20 в 5:02, admin, рубрики: haskell, АлгоритмыРанее мы уже рассмотрели алгоритм Дойча, и тогда мы решали простейшие задачи по квантовым вычислениям. Продолжая развивать разработанный фреймворк, сегодня я предлагаю рассмотреть расширение первоначального алгоритма, которое получило название алгоритма Дойча-Йожи. (Фамилия второго автора алгоритма в русском языке имеет множество вариантов, использованных в литературе: Джоза, Джозса, Йожа; причём иногда фамилия склоняется, а иногда нет. Я предлагаю затвердить вариант Йожа со склонением, поскольку это правильная транслитерация венгерской фамилии Jozsa).
Эта статья является продолжением в цикле статей по модели квантовых вычислений, поэтому если начать читать её без ознакомления с предыдущими статьями цикла, что-то может показаться непонятным. Так что читателя, который впервые набрёл на эти мои заметки, я отправляю к первым статьям: 1, 2, 3.
Далее в статье вы узнаете, как на основе данного определения бинарной функции построить оракул, причём не вручную, как это бывало раньше, а автоматически. Ещё вы узнаете о том, как при помощи всего лишь одного вызова оракула понять тип функции. Ну и ещё мы проведём один занимательный эксперимент, результаты которого для меня, например, были в меру удивительными. Так что всех заинтересовавшихся я попрошу под кат.
Задача о выкидывании негра за борт
2014-03-17 в 8:38, admin, рубрики: haskell, конкурсы, я пиарюсь, метки: haskell, конкурсыТак уж вышло, что на февральский конкурс по функциональному программированию в 2014 году была предложена очень смешная и совершенно неполиткорректная задача, которая, однако же, привлекла небывалое для последних времён количество конкурсантов. В итоге на конкурс было подано 10 решений, а участвовало 9 конкурсантов (то есть один из участников решил задачу на двух языках программирования). Из представленных языков программирования же в порядке убывания были следующие: Haskell (4 решения), Erlang (2 решения), Clojure, JavaScript, Prolog и Scala (по 1 решению). Что, собственно, очень радует.
Победитель получит книгу «Квантовые вычисления и функциональное программирование» с автографом автора, когда она будет написана и опубликована. Собственно, победители всех конкурсов в 2014 году получат именно этот приз, а те, кто займёт второе место — какую-нибудь из имеющихся в библиотечном фонде ФП(ФП) книгу. Ну а теперь, кому интересно, можно ознакомиться с решением конкурсной задачи на языке Haskell.
Альманах-2013 вышел в свет
2014-03-13 в 3:40, admin, рубрики: haskell, альманах, конкурсы, я пиарюсь, метки: haskell, альманах, конкурсыВсем заинтересованным лицам и сочувствующим субъектам спешу сообщить, что я, наконец-то, составил третий сборник отчётов по ежемесячным конкурсам по функциональному программированию, проводимых в 2013 году каждые два месяца под эгидой ФП(ФП). Сборник содержит шесть моих отчётов, несколько отчётов участников, а также исходные коды на языке Haskell по каждому конкурсу. Всем, кто интересуется функциональным программированием и собирает литературу по нему, данная книга будет интересна (в том числе и потому, что это уже третий экземпляр в серии). Кроме того, как периодическое издание Альманах зарегистрирован и получил ISSN, что тоже немаловажно.
Альманах выпущен только в виде электронного издания и распространяется на безвозмездной основе (но всякий всегда может перечислить благодарность в пользу ФП(ФП), и я буду этому очень рад). Скачать электронную книгу можно здесь. Те, кто ещё не может отказаться от бумажных вариантов книг, всегда смогут воспользоваться технологией печати по требованию (print on demand) и заказать себе экземпляр в малой типографии (о возникновении возможности для этого я сообщу дополнительно в официальном блоге ФП(ФП): haskell98.blogspot.ru).
Далее в этой заметке будет приведено расширенное содержание Альманаха, в том числе и для того, чтобы здесь был набор ссылок на отдельные заметки, которые я публиковал на Хаброхабре в течение 2013 года.Читать полностью »
О Haskell по-человечески
2014-03-06 в 7:40, admin, рубрики: haskell, функциональное программирование, метки: haskellПриветствую всех Хабражителей!
Представляю вашему вниманию книгу о языке Haskell. Впрочем, «книга» — это громко сказано: 160-страничное руководство для обыкновенных программистов, которые хотят наконец понять, как же можно жить без оператора присваивания и что такое монада.
Озвучу причины, с чего это вдруг мне, самому заурядному C++-разработчику, взбрело в голову написать про Haskell.
Читать полностью »
Зачем нужны все эти фунткоры и монады?
2014-02-18 в 7:38, admin, рубрики: haskell, монады, Программирование, функциональное программирование, метки: haskell, монады Очень часто в статьях про Хаскель сплошь и рядом встречаются функторы и особенно монады.
Так часто, что порой не реже встречаются комментарии «сколько можно про какие-то новые монады» и «пишите о чём-либо полезном».
На мой взгляд это свидетельствует о том, что люди порой не понимают зачем же нужны все эти функторы и монады.
Это статья попытка показать, что сила функциональных языков и в первую очередь Хаскеля — это в том числе и силе функторов и монад.
Читать полностью »
Дизайн и архитектура в ФП. Введение и Часть 1
2014-02-10 в 2:58, admin, рубрики: haskell, UML, архитектура приложений, паттерны проектирования, Проектирование и рефакторинг, функциональное программирование, метки: UML, архитектура приложений, паттерны проектированияВведение
В мире функционального программирования есть один большой пробел, а именно почти не освещена тема высокоуровневого дизайна больших приложений. Я решил для себя изучить этот вопрос. Есть ли существенные отличия дизайна приложений в ФП-мире от оного в мире императивном? Что такое «каноничный ФП-код»? Какие существуют идиомы разработки, есть ли смысл вообще говорить о паттернах проектирования в применении к ФП? Эти и другие важные вопросы часто вспыхивают то там, то здесь, но покамест мне не известно ни одной книги, аналогичной книге Банды Четырех. Вероятно, мои изыскания уже кто-то повторил, однако тем лучше: схожие результаты подтвердят правильность, иные — укажут на место в теории, которое необходимо доработать.
Читать полностью »
Новая книга по Haskell на русском?
2014-02-05 в 8:58, admin, рубрики: haskell, Блог компании Издательский дом «Питер», книга на русском, метки: haskell, книга на русском Добрый день!
Мы в издательстве «Питер» подумали, что в России не хватает книг по Haskell и решили обратиться к сообществу с вопросом, стоит ли делать перевод одной из таких книг и, если да, — то какой именно?
На наш взгляд, на рынке присутствует только одна достойная книга — русский перевод Learn You a Haskell for Great Good (в русском названии «Изучай Haskell во имя добра!»)
Из кандидатов на русское издание мы рассматриваем следующие книги:
Читать полностью »
Переводчик из меня совершенно никакой, но я просто не мог пройти мимо этой статьи, ибо она излучает волны крутости, а концентрация дзена в ней зашкаливает. Поэтому welcome.
Введение
Недавно я обнаружил интересную игру под названием VimGolf. Цель этой игры заключается в том, чтобы преобразовать кусок текста из одной формы в другую наименьшим возможным количеством нажатий клавиш. Пока я играл на этом сайте с разными пазлами, мне стало любопытно — а какие привычки редактирования текста есть у меня? Мне захотелось лучше понять способы манипулирования текстом в Vim и проверить, смогу ли я найти неэффективные моменты в моем рабочем процессе. Я провожу огромное количество времени в моем текстовом редакторе, поэтому устранение даже незначительных шероховатостей может привести к значительному увеличению производительности. В этом посте я расскажу о своем анализе и о том, как я уменьшил количество нажатий клавиш при использовании Vim. Я назвал эту игру Vim-крокет.
Читать полностью »
Слово малое об обратимых вычислениях
2014-01-17 в 3:21, admin, рубрики: haskell, Алгоритмы, квантовые вычисления, кот шредингера, Программирование, функциональное программирование, метки: haskell, квантовые вычисления, кот шредингераСегодня я хотел бы поднять тему, которая в последнее время становится всё актуальней и интересней. По крайней мере, судя по всё увеличивающемуся количеству публикаций в этому направлении, интерес к ней действительно растёт. Речь веду о так называемых квантовых вычислениях, или, если точнее, о модели квантовых вычислений. Не вдаваясь в самую суть этой модели, я предлагаю уважаемым читателям рассмотреть один из многочисленных вопросов, который имеется в рамках обозначенной темы. Речь поведём об обратимых вычислениях.
Дальнейшее изложение будет проводиться с использованием многочисленных примеров на языке программирования Haskell. Дело в том, что по моему сугубому мнению, функциональное программирование находится намного ближе к модели квантовых вычислений, чем любой иной тип. Обосновывать эту точку зрения я сейчас не буду. Но суть в ином — для постижения модели квантовых вычислений нужен намного более суровый сдвиг парадигмы, чем, к примеру, такой сдвиг от структурного программирования к объектно-ориентированному и тем более к функциональному. Здесь нет ни слова о том, что кто-то из программистов находится выше или ниже, но лишь о том, что освоение новой модели — это реальный переворот в мозгах и способе алгоритмического мышления.
Так что если вам интересна тема, и вы хотите немного погрузиться в волшебный мир квантовых вычислений, то предлагаю ознакомиться с этой небольшой заметкой. Ну а в конце всех ждёт пятничный бонус.