На хабре уже были статьи про продолжения и монаду ContT. Я решил поделиться своим пониманием этого вопроса и снабдить его соответствующими иллюстрациями. В отличие от приведенной выше статьи, мне бы хотелось больше внимания уделить внутреннему устройству монады ContT и разобраться, как же она работает.
Читать полностью »
Рубрика «haskell» - 22
Монада ContT в картинках (Haskell)
2012-08-09 в 21:09, admin, рубрики: haskell, Программирование, метки: haskellОсновы подключения C/C++-кода к Haskell проекту
2012-08-05 в 10:11, admin, рубрики: c++, ffi, haskell, метки: c++, ffi, haskellHaskell один из быстроразвивающихся функциональных языков программирования. Возможно это один из тех функциональных языков которому вы хотите отдать предпочтение практического использования в ближайшее время.
Этот топик для тех, кто хотел бы опробовать Haskell на деле, но имеет горы полезного C и C++ кода с которым требуется считаться.Читать полностью »
Верифицированный QuickSort на Agda
2012-07-31 в 20:04, admin, рубрики: agda, haskell, Программирование, метки: agda, haskellДоброго времени суток, уважаемый читатель!
Прочитав несколько книг по типизированном лямбда исчисление, а именно по зависимым типам, увидел интересную закономерность: везде первым примером приводится определение типа «отсортированный список». Все бы хорошо, но дальше этого определения ничего не было. Вот я и придумал восполнить этот пробел и реализовать функцию, принимающую список, и возвращающую другой список и два доказательства. Одно доказывает, что результат — это перестановка входа, а другое доказывает, что результат — отсортированный список.
Читать полностью »
Поиск кратчайшего расстояния между точками в трёхмерном пространстве
2012-07-23 в 3:40, admin, рубрики: haskell, метки: haskell
Ставший уже традиционным ежемесячный конкурс по функциональному программированию в июне сего года собрал пока наибольшее количество участников с момента запуска оных конкурсов. Не знаю, что послужило причиной этого, но факт остаётся фактом — в конкурсе приняло участие 35 человек, представивших 36 решений, из которых большиинство было на языке Haskell (7 решений) и C++ (6 решений). Другими использованными языками программирования были: Assembler, C, C#, Clojure, D2, Erlang, F#, Java, Nemerle, OCaml, Perl, Python и Scala. И это очень приятно, что имеет место такая диверсификация языков и подходов.
Ну а в качестве задачи была предложена такая формулировка одной из традиционных задач для олимпиад по программированию:
Демиург задумал поместить новую разумную расу на планету во Вселенной так, чтобы она как можно быстрее освоила весь доступный космос. Для этих целей он собрал перечень всех планет, находящихся в поясе Златовласки, после чего решил найти среди них две, наиболее близко расположенные друг к другу. Разумная раса должна быть расположена на одной из таких планет. Это, по замыслу Демиурга, позволит максимально быстро обеспечить освоение космоса. Помогите Демиургу найти две планеты, находящиеся на наименьшем расстоянии друг от друга.
Как видно, это обычная задача на поиск минимального расстояния между точками в пространстве, однако сложность была увеличена тем, что пространство внезапно стало трёхмерным, в то время как в традиционном условии пространство двумерно. Но это нисколько не испугало конкурсантов, хотя и внесло в исходные коды для решения некоторые изменения известного алгоритма.
Задача конкурса ICFPC-2012: робот и λ
2012-07-13 в 23:12, admin, рубрики: haskell, icfpc, Программирование, Спортивное программирование, функциональное программированиеВсего несколько часов назад начался конкурс ICFPC-2012, который продлится все выходные. Я решил перевести задачу для этого конкурса в надежде, что кто-то из заинтересовавшихся людей успеет принять участие.
Задача вполне понятная, так что дерзайте.
Шахты с лямбдами обнаружены в Шотландии! Ваша задача — прочитав карту шахты суметь составить программу для робота.
Читать полностью »
Встреча FProg 2012-07 в Петербурге
2012-07-10 в 11:53, admin, рубрики: agda, fprog, haskell, icfpc, Блог компании JetBrains, встреча, Программирование, функциональное программирование, метки: agda, fprog, haskell, icfpc, встреча, функциональное программирование 
В четверг, 12 июля 2012 года в 19:00 в петербургском офисе компании Яндекс при поддержке компании JetBrains и журнала «Практика функционального программирования» пройдёт очередная встреча FProg. Встреча состоится накануне программистского конкурса ICFP Contest 2012.
Обязательная запись на встречу для доступа в офис осуществляется на странице встречи через Twitter-аккаунт.
Темы докладов:
- Евгений Котельников. Зависимые типы в Haskell
- Ян Малаховски. Введение в Agda
- Андрей Власовских. Команда spb-archlinux на ICFP Contest 2009
C10k (Проблема тысячи соединений) на разных языках/платформах
2012-06-14 в 7:58, admin, рубрики: c10k, erlang, Erlang/OTP, haskell, java. python, node.js, WebSocket, Веб-разработка, смешались в кучу кони люди, метки: c10k, erlang, haskell, java. python, node.js, WebSocket, смешались в кучу кони людиПредупреждение: если у вас есть претензии к бенчмарку и/или к коду, бенчмарк выложен на Гитхабе, что позволяет вам править баги самим или сообщить о багах автору.
Подробнее о проблеме 1000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений
Как с проблемой 1000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Pythin (ws4py)?
C10k (Проблема 10000 соединений) на разных языках/платформах
2012-06-14 в 7:58, admin, рубрики: c10k, erlang, Erlang/OTP, haskell, java. python, node.js, WebSocket, Веб-разработка, смешались в кучу кони люди, метки: c10k, erlang, haskell, java. python, node.js, WebSocket, смешались в кучу кони людиПредупреждение: если у вас есть претензии к бенчмарку и/или к коду, бенчмарк выложен на Гитхабе, что позволяет вам править баги самим или сообщить о багах автору.
Подробнее о проблеме 10000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений
Как с проблемой 10000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Pythin (ws4py)?
Жизнь без объектов
2012-05-26 в 10:14, admin, рубрики: clojure, haskell, scala, ооп, Проектирование и рефакторинг, разработка(Перевод)
Последние несколько лет я провел в изучении и экспериментах со многими языками программирования. В частности, я начал использовать Scala как основной язык, стараюсь использовать функциональный стиль везде где это возможно. Меня также весьма заинтересовал Haskell (чистый функциональный язык) и Clojure (современный диалект Лиспа).
Таким образом, я постепенно отказываюсь от объектно-ориентированной парадигмы, несмотря на то, что использовал в основном её последние 17 лет моей профессиональной деятельности. У меня появляется чувство, что объекты это то, что мешает нам писать лапидарный, структурированный и повторно используемый код.
Читать полностью »
