Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

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

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
Просмотры 991
Комментарии 2

Написание компилятора на Haskell + LLVM

Haskell *Компиляторы *Функциональное программирование *DIY или Сделай сам
Tutorial

На работе я пишу почти исключительно на Python, с университетской скамьи остались некоторые знания C/C++, в одном pet-project использовал Haskell. С таким багажом знаний я взялся за написание компилятора на основе LLVM - зачем и что получилось я уже рассказывал в предыдущей статье.

Эту статью я пишу для тех, кто, как и я, заинтересован в изучении Haskell, создании собственных языков программирования, или хочет поиграться с LLVM - но не знает с какого конца подойти к задаче.

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

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Просмотры 4.5K
Комментарии 2

7 полезных инструментов на Haskell

Блог компании Typeable Программирование *Haskell *Функциональное программирование *

Вступление


Haskell это чистый функциональный язык программирования общего назначения со статической типизацией и ленивыми вычислениями. Появился в 1990 году и был назван в честь Хаскелла Карри. На данный момент основной реализацией является компилятор GHC.


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

happs.ru

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

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

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

Haskell

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

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

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

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

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

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

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

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

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


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

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

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

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


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


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

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

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

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

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

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

Вступление

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

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

Основы

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

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

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

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

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

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

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

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

Monadic Parser Combinator в Nemerle

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

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

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

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

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

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

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

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

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

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

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