Pull to refresh
  • by relevance
  • by date
  • by rating

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

LispErlang/OTPHaskellФункциональное программированиеКонференции


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


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


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

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views890
Comments 2

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

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

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

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

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

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

Чулан
haque.nfshost.com/blog

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

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

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

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

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

Основной вопрос — имеется ли в таком бреде смысл?
Total votes 11: ↑8 and ↓3 +5
Views291
Comments 16

happs.ru

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

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

Ненормальное программирование
Интроспективной называется программа, которая на вывод подает свой же исходный текст. Но я наткнулся на более интересный вариант: программа на Haskell, которая выводит программу на Python, которая выводит программу на Ruby, которая выводит исходную программу на Haskell.
Посмотреть исходный код
Total votes 33: ↑30 and ↓3 +27
Views1.3K
Comments 30

Haskell

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

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

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

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

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

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

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

Ненормальное программирование
Translation
От переводчика:

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


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

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

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

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


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


Читать дальше →
Total votes 126: ↑117 and ↓9 +108
Views6.6K
Comments 76

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

Чулан
Всем привет,

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

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

Читать дальше →
Total votes 103: ↑55 and ↓48 +7
Views1.2K
Comments 209

Вступление

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

Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады
Total votes 68: ↑63 and ↓5 +58
Views3.6K
Comments 54

Основы

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

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

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

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

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

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

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

Предыдущие статьи:
Основы
Последующие статьи:
Классы типов, монады
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views8.9K
Comments 9

Monadic Parser Combinator в Nemerle

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

Сломать мозг с помощью ФП
Total votes 17: ↑17 and ↓0 +17
Views1.9K
Comments 9

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

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

Предыдущие статьи:
Типы данных, паттернг матчинг и функции
Основы
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Views10.6K
Comments 24

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

Prolog
Эта головоломка уже знакома Хабрахабру по этой публикации.

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

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

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

Читать дальше →
Total votes 24: ↑18 and ↓6 +12
Views5.4K
Comments 3

GTD DSL на Haskell

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

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

что получилось
Total votes 9: ↑8 and ↓1 +7
Views502
Comments 2

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

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