Как стать автором
Обновить

Открыта регистрация участников на Международную конференцию по функциональному программированию

Время прочтения 2 мин
Просмотры 1.2K
Lisp *Erlang/OTP *Haskell *Функциональное программирование *Конференции


ICFP 2020 — двадцать пятая конференция под эгидой ACM SIGPLAN. В этом году конференция будет проводиться онлайн, и все события, проходящие в её рамках, будут онлайн.


Соревнование ICFP по программированию будет проводиться с 17 июля по 20 июля 2020 года (то есть, уже через два дня).


Сама конференция будет проходить с 24 по 26 августа 2020, и укладываться в два тайм-слота. Первый слот будет проходить с 9:00 до 17:30 по времени Нью-Йорка, и будет включать как технические, так и социальные мероприятия. Второй тайм-слот будет проходить с 9:00 до 17:30 по Пекинскому времени, на следующий день, и будет с незначительными вариациями повторять содержимое предыдущего дня, включая технические и социальные мероприятия.

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 2

вот тебе бабушка и plan9, prolog и haskell.

Время прочтения 1 мин
Просмотры 1.9K
Чулан
Хм. Изобретал, писал статью, анализировал, и вот доанализировался. Выходит что на масштабах расспараллеливания, более крупных, чем автоматический внутри процессора, самый удобный метод описания взаимосвязи между параллельными компонентами программы — это файлы, хитрые, конечно, больше похожие на память, но файлы. При этом все попытки изобрести суперпупергипер систему для распараллеливания сводятся к созданию простой и эффективной распределённой файловой системы, не привязанной к дискам, конечно (привет Робу Пайку и Plan9). Но что самое занятное, всё это очень тесно связано с функциональным программированием и математикологическими предложениями Хорна. Можно на всё и так смотреть. Хых. Может быть, кину сюда статью, если условия публикации и карма позволят. Надо ещё попробовать в png выкладывать архивы: ) Руки всё не доходят.
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 9

Haskell: а мне можно?

Время прочтения 1 мин
Просмотры 1.5K
Чулан
Заметка для тех, кто не только слышал всякое про Haskell, но еще и заинтересовался этим…

Привожу несколько ссылок для тех, кто хочет понять, что же такого «здоровского» в этом языке программирования, и с чего начать:В общем-то, все приведенные ссылки, кроме одной (угадайте, какой) предполагают наличие весьма неплохого знания технического английского языка.
Возможно, эта информация покажется вам не очень полезной, но, по крайней мере, позволит определиться с вашим личным отношением к этому языку программирования.
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Proof-of-concept: блог на статическом XHTML

Время прочтения 1 мин
Просмотры 606
Чулан
haque.nfshost.com/blog

(поддерживается только firefox 1.5+)

Практически все делается на клиенте — на сервере только серверная логика. Какое-либо генерирование xhtml на сервере отсутствует.

Клиентский софт представляет из себя единственную xhtml-страницу, генерирует она сама себя с помощью xslt. На сервере — dsl для серверной логики (интерпретатор написан на хаскеле), называется haque.

Поддерживаются пользователи, администрирование, модерирование комментариев, markdown.

Строк кода: xhtml — 262, скрипт на самописном dsl (haque) — 76.

Основной вопрос — имеется ли в таком бреде смысл?
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 16

happs.ru

Время прочтения 1 мин
Просмотры 680
Чулан
Недавно открылся happs.ru — сайт посвящен разработке сайтов на хаскельном движке happs, а также практическому программированию на хаскеле. По случаю фактического отсутствия у happs доков, сайт представляет собой весьма ценный ресурс :-) Надеюсь, что развитие проекта не остановится, и он будет радовать нас столь ценными статьями и в дальнейшем.
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 6

К вопросу об интроспективных программах

Время прочтения 1 мин
Просмотры 1.4K
Ненормальное программирование *
Интроспективной называется программа, которая на вывод подает свой же исходный текст. Но я наткнулся на более интересный вариант: программа на Haskell, которая выводит программу на Python, которая выводит программу на Ruby, которая выводит исходную программу на Haskell.
Посмотреть исходный код
Всего голосов 33: ↑30 и ↓3 +27
Комментарии 30

Haskell

Время прочтения 1 мин
Просмотры 1.5K
Чулан
Вот существует такая категория людей — любители программировать на Haskell. И всё с ними хорошо и замечательно, но мучает меня такое обстятельство, что я совершенно их не понимаю :).

То есть да, Haskell, монады, всё круто, сложно, разминка для мозгов, куча неявных правил и ленивых вычислений. Можно мерятся пузами в искусстве писать стрелочки и bind'ы. И так далее. Но вот от чего уши встают дыбом? Так это от того, что эти люди неожиданно начинают заявлять, что все их программки в одну строчку делаются исключительно средствами языка. Вот что тут странно. Куда пропадает из этого рассуждения мысль о том, что этот самый Haskell требует нешуточного такого runtime для своей работы: ядро Linux, например, плюс ещё сверху процедуры развёртки/свёртки lambda-графов, не считая, сборщика мусора.

Конечно, естественно, когда у вас есть ядро Linux, Apache, runtime и монада IO, наполовину написанная на Си, то web-приложение на Haskell можно написать в три строчки.

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

Вот этого я не понимаю… Хм. Или я не понимаю чего-то другого? Того же великого Дао, скрытого за этими самыми монадами и оператором bind? Или там понимать нечего и всё является чистой воды выпендрёжем?

Эх. Проблема в том, что мы живём в век дезинформации, мнений авторитетов и сверхспециализации.
Всего голосов 24: ↑21 и ↓3 +18
Комментарии 85

Чем изучение Haskell/Python вредит программисту

Время прочтения 5 мин
Просмотры 27K
Ненормальное программирование *
Перевод
От переводчика:

На этот перевод меня толкнула очередная ситуация «мозгового ступора» при написании банального кода на C++/C#: я часами смотрел на уродливый код, но не мог сделать его по-настоящему лучше; мне пришлось просто принять то, что уродливым его видел только я один, и это была моя проблема, а не проблема в коде или языке. Я вспомнил те времена, когда такого со мной не было — а заодно вспомнил и эту старую статью, автор которой пострадал так же, как и я, при этом хорошо написав об этом.


Я обнаружил, что изучение Python и Haskell не улучшило меня как программиста на других языках (что противоречит тому, что иногда пишут об этом). В частности, Haskell — являясь настолько непохожим на императивные языки — по идее, должен был дать мне просветление в программировании, которое помогало бы мне даже без использования какого-либо языка вообще. Мой текущий опыт не совсем соответствует этому, и вот, почему:
Читать дальше →
Всего голосов 94: ↑85 и ↓9 +76
Комментарии 222

Three Futamura Projections и не только

Время прочтения 7 мин
Просмотры 9.6K
Ненормальное программирование *
Привет, хабрачеловек. Сегодня я расскажу тебе про некоторые фундаментальные вещи в computer science: частичные вычисления, три проекции Футамуры и суперкомпиляцию.
 
 

1. Сразу к коду


-- функция, которая возводит x в степень y (неотрицательную)
power x y =
    case y of
        0 → 1
        1 → x
        _ → x * (power x (y - 1))


Читать дальше →
Всего голосов 126: ↑117 и ↓9 +108
Комментарии 76

Почему циклы должны умереть

Время прочтения 3 мин
Просмотры 2.8K
Чулан
Всем привет,

Прочитав недавнее обсуждение по поводу PHP, обнаружилось, что много людей боятся рекурсии как огня. Таковой миф нужно разоблачить!

Сегодня мы обоснуем, почему циклы это плохо, и почему их надо замочеть. В процессе мы будем пейсать на православном языке Хаскель, который очень непонятен. Вас предупредили!

Читать дальше →
Всего голосов 103: ↑55 и ↓48 +7
Комментарии 209

Вступление

Время прочтения 1 мин
Просмотры 3.7K
Haskell *
Haskell достаточно необычный язык. Но, несмотря на немалое количество статей по нему, нередко можно столкнуться с мнением, что всё это помогает лишь в синтетических примерах. И действительно, на простых примерах всё выглядит просто, но куда сложнее представить себе хотя бы небольшую программу в таком стиле, а статьи зачастую рассматривают особенности языка. Поэтому я захотел написать серию статей, в течение которых мы изучим возможности языка и попробуем написать простой чат. Почему именно чат? Потому что там есть место и многопоточности, и GUI клиента, и БД сервера. Хотя я с удовольствием послушал бы и ваши предложения, так как мне самому интересно, насколько этот язык удобен для решения более сложных задач.
Так что, если вас это заинтересует, то я рискну.

Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады
Всего голосов 68: ↑63 и ↓5 +58
Комментарии 54

Основы

Время прочтения 8 мин
Просмотры 13K
Haskell *
Сегодня я постараюсь рассказать самые основы, такие, как базовые типы данных, типы функций, ФВП, списки (в том числе и бесконечные).

Последующие статьи:
Типы данных, паттерн матчинг и функции
Классы типов, монады
Читать дальше →
Всего голосов 72: ↑69 и ↓3 +66
Комментарии 162

Создаём парсер для ini-файлов на Haskell

Время прочтения 8 мин
Просмотры 8.1K
Haskell *
В данной статье я расскажу как написать свой парсер ini-файлов на Haskell. За основу возьму контекстно-свободную грамматику, построенную в моей предыдущей статье. Для построения парсера будет использоваться библиотека Parsec, которая позволяет строить свои собственные парсеры комбинируя готовые примитивные парсеры при помощи парсерных комбинаторов.

Важно: в данной статье предполагается, что читатель знаком с основами Haskell. Если это не так, то я советую сначала прочитать пару статей для новичков (их можно найти в том числе и на Хабре).
Читать дальше →
Всего голосов 39: ↑30 и ↓9 +21
Комментарии 15

Типы данных, паттернг матчинг и функции

Время прочтения 5 мин
Просмотры 9.4K
Haskell *
Сегодня, как обещал, вкратце расскажу про пользовательские типы данных, определения функций и сопоставления с образцом.

Предыдущие статьи:
Основы
Последующие статьи:
Классы типов, монады
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 9

Monadic Parser Combinator в Nemerle

Время прочтения 7 мин
Просмотры 2.1K
Программирование *
Недавно обнаружил замечательную статью Monadic Parser Combinator про создание парсеров. Основная идея заключена в том, что бы описать парсер как объект первого класса, что бы можно было произвести декомпозицию исходной задачи и представить искомый парсер в виде синтеза более простых парсеров. Что бы облегчить комбинацию парсеров используется подход replace error with list of success. В языке haskell очень удобно работать с созданием парсеров, так как эта задача естественно ложится на концепцию монад, к сожалению в nemerle монады не поддерживаются, но все же язык достаточно мощный, что бы справиться с данной задачей.

Сломать мозг с помощью ФП
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 9

Классы типов, монады

Время прочтения 15 мин
Просмотры 12K
Haskell *
Темой сегодняшней статьи будут классы типов, некоторые стандартные из них, синтаксический сахар с их использованием и класс монад.
Классы привносят динамический полиморфизм, как и интерфейсы в традиционных императивных языках, а также могут быть использованы как замены отсутствующей в Хаскеле перегрузки функций.
Я расскажу, как определить класс типов, его экземпляры (instance) и как это всё устроено внутри.

Предыдущие статьи:
Типы данных, паттернг матчинг и функции
Основы
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 24

Японская версия головоломки «Волк, коза и капуста» на прологе

Время прочтения 3 мин
Просмотры 5.9K
Prolog *
Эта головоломка уже знакома Хабрахабру по этой публикации.

Суть головоломки в следующем (цитируя bor1s):
Нужно перевезти семью из шести человек и полицейского с бандитом на другой берег реки на плоту. Однако одновременно на плот помещаются только два человека (уточнение: один из которых должен быть взрослым), мама, оставшись без папы, избивает мальчиков, папа — девочек. А бандит (уточнение: в отсутствие полицейского) просто мочит всех.

Пройти головоломку online можно по ссылке: http://freeweb.siol.net/danej/riverIQGame.swf.

Пролог обычно хорошо справляется с решением таких задач, в чем я и решил убедиться…

Читать дальше →
Всего голосов 24: ↑18 и ↓6 +12
Комментарии 3

GTD DSL на Haskell

Время прочтения 2 мин
Просмотры 1.3K
Чулан
Давеча искал я программное обеспечение для GTD, или по-русски «как привести дела в порядок». Конечно, многие инструменты красивые и простые, но у таких не хватает гибкости и возможностей настройки. Другие же — сложные монстры с горой ненужной функциональности. Как же совместить безграничную гибкость с простотой?

Я, как любитель текстовых интерфейсов, предпочёл предметно-ориентированный DSL язык вместо GUI. Но писать парсер языка с нуля далеко не просто. Гораздо приятнее надстроить типы над готовым языком Haskell.

что получилось
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 2

Zipper — производная от типа

Время прочтения 5 мин
Просмотры 2.7K
Haskell *
Zipper — способ представления типа данных, позволяющий проходить по структуре и изменять отдельные элементы, несмотря на функциональную чистоту. Например, если по списку мы можем только пробежаться вперёд, делая что-либо с элементами, то с зиппером мы сможем «находиться» в определённом элементе, перемещаться вперёд-назад и менять текущий элемент.
Интересно то, что зиппер для некоторого типа можно получить буквально взяв его производную.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 11