Посты с тэгом haskell


Впечатления от посещения EuroPython 2014


Одна из отличительных особенностей языка Python — это посвящённые этому языку конференции, так называемые PyConы. Не так давно мне удалось побывать на одном таком PyCon-е — EuroPython 2014. EuroPython — это одна из наиболее крупных европейских ежегодных конференций по языку Python, которая три последних года проводилась во Флоренции, а в 2014м — первый раз в Берлине. Пока свежи воспоминания решил написать небольшой отчётик — что и как было.
Читать дальше →


Functional programming in Python

Случалось ли вам познать что-то абсолютно новое и применять полученные знания в совсем неочевидном для этом месте? Мне - да. Иногда и изучение Haskell может быть полезным, хотя можно по пальцам посчитать вакансии с требований знаний ФП. Но не тут то было! Силу функциональных языков можно использовать и здесь, в любимом Python. Сейчас мы узнаем, как.

А вот и первый пример - λ-исчисление! В чем же отличие от привычного нам def? Во-первых, ее объявление можно вставить в любое место, то есть, ее не нужно задавать заранее, чтобы использовать. Во-вторых - согласитесь, эта запись намного компактнее. К тому же, наши анонимные функции(которые могут быть и без имени вовсе) понадобятся нам в дальнейшем. Как просто:

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



Поиск кратчайшего расстояния между точками в трёхмерном пространстве

Ставший уже традиционным ежемесячный конкурс по функциональному программированию в июне сего года собрал пока наибольшее количество участников с момента запуска оных конкурсов. Не знаю, что послужило причиной этого, но факт остаётся фактом — в конкурсе приняло участие 35 человек, представивших 36 решений, из которых большиинство было на языке Haskell (7 решений) и C++ (6 решений). Другими использованными языками программирования были: Assembler, C, C#, Clojure, D2, Erlang, F#, Java, Nemerle, OCaml, Perl, Python и Scala. И это очень приятно, что имеет место такая диверсификация языков и подходов.

Ну а в качестве задачи была предложена такая формулировка одной из традиционных задач для олимпиад по программированию:

Демиург задумал поместить новую разумную расу на планету во Вселенной так, чтобы она как можно быстрее


C10k (Проблема 10000 соединений) на разных языках/платформах

Предупреждение: если у вас есть претензии к бенчмарку и/или к коду, бенчмарк выложен на Гитхабе, что позволяет вам править баги самим или сообщить о багах автору.

Подробнее о проблеме 10000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений

Как с проблемой 10000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Pythin (ws4py)?

скандалы, интриги, расследования


Еще немного переносов

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


Зачем это мне нужно? Вот эта штука, если среди прочего сделать так:

то все производимые ею русские тексты будут с расставленными переносами.



Data.ByteString, Data.Text и Text.Parsec

Вчера весь день ломал себе черепную коробку об матчинг юникодных символов парсековыми 'char', 'oneOf' и 'noneOf' в условиях парсера над ByteString-ом. То юникоды не матчились (если делать внаглую), то аутпут бился (если делать Stream над ByteString с UTF8.uncons). И так и эдак выходило криво.

Сейчас вот утром встал, перепилил всё на Data.Text буквально за 15 минут — код сократился процентов на 15-20, глюки исчезли. волосы стали мягкими и шелковистыми.

Такие дела. Надо было это вчера делать, может сны бы снились не такие мрачные.

P.S. Что характерно, импортер на питоне и реглуярках раобтает раз в 100 (буквально) медленней, чем хаскельный на парсеке, который я запускаю через runghc (пока пилю).



Мини-отчёт об участии в GCJ

GCJ(Google Code Jam) - контест по спортивному программированию, который проводит всем известная компания Google. Контест не командный, международный, проводится в онлайн.
В этому году участвовал в первый раз, основные результаты таковы: остановился на втором раунде, в третий не прошёл.

Впечатления

Сумбурные. Участие в ICFPC и в Sapka рождает совсем другие эмоции. GCJ более напряженный, задачи значительно меньше по объему, но труднее, временные рамки куда жестче. Однако задачи GCJ отличаются и от тех, что встречаются на ACMовских олимпиадах. Большинство задач действительно имеют очень короткие и очень красивые решения, каждую из них действительно можно решить за отведенное время, если уловить какую-то важную мысль.

Выводы

  • Неожиданно для себя обнаружил доказательство тезиса