Рубрика «haskell» - 14

Одним вечером я наткнулся на статью о реализации одномерного клеточного автомата с помощью комонад, однако материал неполон и немного устарел, в связи с чем решил написать русскоязычную адаптацию (заодно рассмотрев двумерные клеточные автоматы на примере Game of Life)

life_anim
Читать полностью »

Продолжаем изучать квантовые вычисления: алгоритм Дойча ЙожиРанее мы уже рассмотрели алгоритм Дойча, и тогда мы решали простейшие задачи по квантовым вычислениям. Продолжая развивать разработанный фреймворк, сегодня я предлагаю рассмотреть расширение первоначального алгоритма, которое получило название алгоритма Дойча-Йожи. (Фамилия второго автора алгоритма в русском языке имеет множество вариантов, использованных в литературе: Джоза, Джозса, Йожа; причём иногда фамилия склоняется, а иногда нет. Я предлагаю затвердить вариант Йожа со склонением, поскольку это правильная транслитерация венгерской фамилии Jozsa).

Эта статья является продолжением в цикле статей по модели квантовых вычислений, поэтому если начать читать её без ознакомления с предыдущими статьями цикла, что-то может показаться непонятным. Так что читателя, который впервые набрёл на эти мои заметки, я отправляю к первым статьям: 1, 2, 3.

Далее в статье вы узнаете, как на основе данного определения бинарной функции построить оракул, причём не вручную, как это бывало раньше, а автоматически. Ещё вы узнаете о том, как при помощи всего лишь одного вызова оракула понять тип функции. Ну и ещё мы проведём один занимательный эксперимент, результаты которого для меня, например, были в меру удивительными. Так что всех заинтересовавшихся я попрошу под кат.

Читать полностью »

Задача о выкидывании негра за бортТак уж вышло, что на февральский конкурс по функциональному программированию в 2014 году была предложена очень смешная и совершенно неполиткорректная задача, которая, однако же, привлекла небывалое для последних времён количество конкурсантов. В итоге на конкурс было подано 10 решений, а участвовало 9 конкурсантов (то есть один из участников решил задачу на двух языках программирования). Из представленных языков программирования же в порядке убывания были следующие: Haskell (4 решения), Erlang (2 решения), Clojure, JavaScript, Prolog и Scala (по 1 решению). Что, собственно, очень радует.

  • Постановка задачи: здесь.
  • Отчёт о проведении конкурса: здесь.

Победитель получит книгу «Квантовые вычисления и функциональное программирование» с автографом автора, когда она будет написана и опубликована. Собственно, победители всех конкурсов в 2014 году получат именно этот приз, а те, кто займёт второе место — какую-нибудь из имеющихся в библиотечном фонде ФП(ФП) книгу. Ну а теперь, кому интересно, можно ознакомиться с решением конкурсной задачи на языке Haskell.

Читать полностью »

Альманах 2013 вышел в светВсем заинтересованным лицам и сочувствующим субъектам спешу сообщить, что я, наконец-то, составил третий сборник отчётов по ежемесячным конкурсам по функциональному программированию, проводимых в 2013 году каждые два месяца под эгидой ФП(ФП). Сборник содержит шесть моих отчётов, несколько отчётов участников, а также исходные коды на языке Haskell по каждому конкурсу. Всем, кто интересуется функциональным программированием и собирает литературу по нему, данная книга будет интересна (в том числе и потому, что это уже третий экземпляр в серии). Кроме того, как периодическое издание Альманах зарегистрирован и получил ISSN, что тоже немаловажно.

Альманах выпущен только в виде электронного издания и распространяется на безвозмездной основе (но всякий всегда может перечислить благодарность в пользу ФП(ФП), и я буду этому очень рад). Скачать электронную книгу можно здесь. Те, кто ещё не может отказаться от бумажных вариантов книг, всегда смогут воспользоваться технологией печати по требованию (print on demand) и заказать себе экземпляр в малой типографии (о возникновении возможности для этого я сообщу дополнительно в официальном блоге ФП(ФП): haskell98.blogspot.ru).

Далее в этой заметке будет приведено расширенное содержание Альманаха, в том числе и для того, чтобы здесь был набор ссылок на отдельные заметки, которые я публиковал на Хаброхабре в течение 2013 года.Читать полностью »

Приветствую всех Хабражителей!

Представляю вашему вниманию книгу о языке Haskell. Впрочем, «книга» — это громко сказано: 160-страничное руководство для обыкновенных программистов, которые хотят наконец понять, как же можно жить без оператора присваивания и что такое монада.

Озвучу причины, с чего это вдруг мне, самому заурядному C++-разработчику, взбрело в голову написать про Haskell.
Читать полностью »

Очень часто в статьях про Хаскель сплошь и рядом встречаются функторы и особенно монады.
Так часто, что порой не реже встречаются комментарии «сколько можно про какие-то новые монады» и «пишите о чём-либо полезном».
На мой взгляд это свидетельствует о том, что люди порой не понимают зачем же нужны все эти функторы и монады.

Это статья попытка показать, что сила функциональных языков и в первую очередь Хаскеля — это в том числе и силе функторов и монад.
Зачем нужны все эти фунткоры и монады?
Читать полностью »

Введение

В мире функционального программирования есть один большой пробел, а именно почти не освещена тема высокоуровневого дизайна больших приложений. Я решил для себя изучить этот вопрос. Есть ли существенные отличия дизайна приложений в ФП-мире от оного в мире императивном? Что такое «каноничный ФП-код»? Какие существуют идиомы разработки, есть ли смысл вообще говорить о паттернах проектирования в применении к ФП? Эти и другие важные вопросы часто вспыхивают то там, то здесь, но покамест мне не известно ни одной книги, аналогичной книге Банды Четырех. Вероятно, мои изыскания уже кто-то повторил, однако тем лучше: схожие результаты подтвердят правильность, иные — укажут на место в теории, которое необходимо доработать.
Читать полностью »

Добрый день!
Мы в издательстве «Питер» подумали, что в России не хватает книг по Haskell и решили обратиться к сообществу с вопросом, стоит ли делать перевод одной из таких книг и, если да, — то какой именно?
image
На наш взгляд, на рынке присутствует только одна достойная книга — русский перевод Learn You a Haskell for Great Good (в русском названии «Изучай Haskell во имя добра!»)

Из кандидатов на русское издание мы рассматриваем следующие книги:
Читать полностью »

в 9:52, , рубрики: haskell, python, vim, workflow

Переводчик из меня совершенно никакой, но я просто не мог пройти мимо этой статьи, ибо она излучает волны крутости, а концентрация дзена в ней зашкаливает. Поэтому welcome.

Введение

Недавно я обнаружил интересную игру под названием VimGolf. Цель этой игры заключается в том, чтобы преобразовать кусок текста из одной формы в другую наименьшим возможным количеством нажатий клавиш. Пока я играл на этом сайте с разными пазлами, мне стало любопытно — а какие привычки редактирования текста есть у меня? Мне захотелось лучше понять способы манипулирования текстом в Vim и проверить, смогу ли я найти неэффективные моменты в моем рабочем процессе. Я провожу огромное количество времени в моем текстовом редакторе, поэтому устранение даже незначительных шероховатостей может привести к значительному увеличению производительности. В этом посте я расскажу о своем анализе и о том, как я уменьшил количество нажатий клавиш при использовании Vim. Я назвал эту игру Vim-крокет.
Читать полностью »

Слово малое об обратимых вычисленияхСегодня я хотел бы поднять тему, которая в последнее время становится всё актуальней и интересней. По крайней мере, судя по всё увеличивающемуся количеству публикаций в этому направлении, интерес к ней действительно растёт. Речь веду о так называемых квантовых вычислениях, или, если точнее, о модели квантовых вычислений. Не вдаваясь в самую суть этой модели, я предлагаю уважаемым читателям рассмотреть один из многочисленных вопросов, который имеется в рамках обозначенной темы. Речь поведём об обратимых вычислениях.

Дальнейшее изложение будет проводиться с использованием многочисленных примеров на языке программирования Haskell. Дело в том, что по моему сугубому мнению, функциональное программирование находится намного ближе к модели квантовых вычислений, чем любой иной тип. Обосновывать эту точку зрения я сейчас не буду. Но суть в ином — для постижения модели квантовых вычислений нужен намного более суровый сдвиг парадигмы, чем, к примеру, такой сдвиг от структурного программирования к объектно-ориентированному и тем более к функциональному. Здесь нет ни слова о том, что кто-то из программистов находится выше или ниже, но лишь о том, что освоение новой модели — это реальный переворот в мозгах и способе алгоритмического мышления.

Так что если вам интересна тема, и вы хотите немного погрузиться в волшебный мир квантовых вычислений, то предлагаю ознакомиться с этой небольшой заметкой. Ну а в конце всех ждёт пятничный бонус.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js