Метка «haskell» - 5

Сегодня в почтовой рассылке Simon Marlow объявил о том, что он уходит из MIcrosoft Research.

«Я планирую взять небольшой перерыв и завершить мою книгу о многопоточном и параллельном программировании на Haskell для издательства O'Relly, а затем начать работу в британском офисе Facebook в марте 2013 года» — пишет он.

Simon Marlow — один из создателей языка Haskell и один из ведущих разработчиков единственного наиболее популярного компилятора, GHC.Читать полностью »

Приветствую всех пользователей Хабрахабр!
Я недавно начал изучать Haskell, и, немного освоив его, решил поделиться небольшим накопленным опытом. Конечно же, знания Haskell у меня не на таком уровне как у Darkus, поэтому две задачи, которые описаны ниже, ориентированны больше на новичков, но опытные пользователи возможно и поправят, и подскажут как лучше сделать. Эта не только моя первая статья на Хабрахабр, но и вообще мой первый туториал, который я когда-либо писал.
Читать полностью »

Символьные вычисления на примере решения одной несложной задачи по квантовой механикеСего дня я хотел бы предложить своим читателям небольшую заметку о том, как при помощи языка Haskell разработать модуль для выполнения символьных вычислений. В этой заметке будет описано только самое начало — как подступиться к задаче, какие типы данных использовать, как привязать к решению задачи мощную систему вывода типов языка Haskell. При помощи разработанных программных сущностей мы попробуем решить одну простенькую задачу по квантовой механике или даже, скорее, по линейной алгебре (она взята из первого задания курса «Quantum Mechanics and Quantum Computation» на Coursera — задача № 11). При этом мы посмотрим, как последовательное написание функций для выполнения символьных вычислений позволяет всё ближе и ближе подойти к правильному решению.

Вот условие задачи:

Let |ϕ> = ½ |0> + (1 + √2 i)/2 |1> be the state of a qubit. What is the inner product of |ϕ> and |+>?

Другими словами, необходимо найти скалярное произведение двух векторов, которые представляют кубиты |ϕ> и |+>, причём первый кубит задан в базисе (|0>, |1>), а то, как в этом же базисе раскладывается второй кубит, надо помнить :).

Для решения задачи мы будем пользоваться соглашением о скалярном произведении комплекснозначных векторов, принятом в физике — для этого используется так называемая нотация Дирака. Это значит, что при произведении компонентов векторов, для первого вектора необходимо взять сопряжённые комплексные числа. Но это частность. В общем же нашей задачей является написание общего модуля для решения символьных выражений. Почему символьных? Потому что ответ требуется примерно в таком же виде, в каком задано условие — в виде дробей, невычисленных квадратных корней и т. д.

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

3.98 КБУважаемым читателям хочу представить первый сборник отчётов по ежемесячным конкурсам по функциональному программированию, которые проводятся под эгидой ФП(ФП). Сборник содержит пять отчётов, а также некоторое количество дополнительных материалов. Всем, кто интересуется функциональным программированием и собирает литературу по нему, данная книга будет интересна.

Книга выпущена только в виде электронного издания и распространяется на безвозмездной основе (но всякий всегда может перечислить благодарность в пользу ФП(ФП), и я буду этому очень рад). Те, кто ещё не может отказаться от бумажных вариантов книг, всегда смогут воспользоваться технологией печати по требований (print on demand) и заказать себе экземпляр в малой типографии. В частности, в издательстве Самиздал можно заказать печатный вариант этой книги прямо «из коробки»: Альманах 2011. Там же есть и все остальные мои книги. Более того, при заказе любой моей книги вы можете указать в примечании, что заказ надо отправить на адрес автора (в издательстве знают), и тогда я с удовольствием поставлю автограф, после чего перешлю книгу заказавшему.

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

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

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

В числе самых верхнеуровневых требований выдвинем следующие:

  • Программа должна быть исполнена в виде консольного приложения с диалоговым режимом.
  • Вместе с тем она должна быть в меру дружественна к пользователю.
  • Программа должна позволять играть в слова на различные темы, а список тем формируется игроком в процессе использования.
  • Программа должна обучаться в процессе игры, подразумевая, что игрок — человек, обладающий полным знанием естественного языка (сильное предположение, но это лучше, чем ничего :).
  • Программа должна иметь несколько стратегий игры — от самой лёгкой до довольно сложной; также должна быть возможность смены стратегии в процессе игры на основании каких-либо критериев.

Вот с этим багажом и начнём. В описании, как всегда, воспоследуем принципам модульности и разработки сверху вниз.

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

в 16:24, , рубрики: haskell, sublime, sublime plugin, метки: , ,

В рамках знакомства с плагинами Sublime Text 2, добавил в SublimeHaskell несколько новых возможностей и багфиксов. Автор пока занят, поэтому pull request в подвешенном состоянии, забрать можно на гитхабе.

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

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

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

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

Недавно в свободное время написал программу для генерации диаграмм, полученных с помощью разложения числа на простые множители или "факторизационных диаграмм".

Вот так выглядит 700:
Диаграммы разложения на простые множители

По расположению точек несложно заметить, что всего их здесь 7*5*5*2*2.

Далее описание того, как это работает.
Читать полностью »

Через тернии к Haskell. 2/2

Вторая часть короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь

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

Через тернии к Haskel (перевод). 2/2

Вторая часть ПЕРЕВОДА короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь

Оригинал здесь

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


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