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

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

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

Про ФП #2

Чулан
Было время, когда функциональные языки котировались если не больше, то наравне с императивными. Время прошло и даже известно почему. Почему-то считается, что программирование на функциональном языке это «взрыв мозга». Не спорю, иногда действительно взрыв, но это буквально дружеский хлопок по ушам, по сравнению с взрывами мозга, которые мне периодически приходится испытывать разбираясь в чужих исходниках на C#. Я очень хочу, что бы история была спиралевидной (-:
Читать дальше →
Всего голосов 10: ↑5 и ↓5 0
Просмотры 610
Комментарии 14

В Visual Studio появится язык F#

Чулан
Microsoft планирует внедрить поддержку функционального языка программирования F# (произносится как “F sharp”) в среду разработки Visual Studio. Об этом сообщил вице-президент подразделения Microsoft Developer Division в своём блоге. Это пока неофициальная информация, и никаких сроков не объявлено, но всё к тому идёт.

Язык F# основан на принципах функционального программирования, то есть в нём процесс вычисления трактуется как вычисление значений функций в математическом понимании. Это отличается от парадигмы императивного программирования, в которой процесс вычисления описывается в виде последовательности инструкций, похожих на приказы, изменяющих состояние программы. Кроме F#, в список функциональных языков входят Лисп, Miranda, Haskell, ML и другие.

Тексты программ на F# похожи на алгебру, они отлично подходят для описания математических функций, что требуется в разработке финансовых, научных, технических и других приложений. Язык F# поддерживает интерактивные скрипты, такие как Python, умеет работать с библиотеками .Net и средствами баз данных.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 367
Комментарии 47

defun.ru: Digg для психов

Чулан

Ну раз никто не до сих пор не сказал, скажу я.
Не далее чем в пятницу мы с lrrr официально открыли λ-версию Гламурного, Вебдванольного (хе-хе) сервиса defun.ru.
Сервис предназначен для коллекционирования ссылок про декларативное, функциональное и другое неземное программирование.
Подробнее у меня и у lrrr в блогах.
Надеюсь вам будет интересно.
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 225
Комментарии 21

Болезнь, Nemerle

Программирование *
imageNemerle — язык под .NET, который поддерживает три парадигмы программирования: та, которую большинство программистов считает за ООП парадигму, функциональную парадигму (алгебраические типы данных, pattern-matching) и метапрограммирование (АОП, квазицитирование, расширение синтаксиса самого nemerle через макросы a-la lisp ). Все это положено на рельсы строгой статической типизации и приправлено мощной системой вывода типов.

Читать далее...
Всего голосов 57: ↑51 и ↓6 +45
Просмотры 7.5K
Комментарии 49

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

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

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

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

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

Оптимизация хвостовой рекурсии в .NET и Nemerle

Программирование *
Недавно chiaroscuro написал провокационную статью с жёлтым заголовком «Почему циклы должны умереть». Её обсуждение заняло около 180 комментариев, но сама статья ушла в минус и не попала на главную, не смотря на то, что она содержала здравую мысль об использовании рекурсии вместо циклов.

В этой статье я дополню его пост и приведу примеры реализации на одном из лучших языков под .NET — Nemerle, а так же сделаю холиварное заявление о преимуществе .NET перед Java.

Я соглашаюсь с тем, что данная статья распространяется на условиях CC-NC-BY
Всего голосов 40: ↑30 и ↓10 +20
Просмотры 5.1K
Комментарии 103

F#: Hello, World

.NET *F# *
Приблизительно через год нас ждет очередной релиз Microsoft Visual Studio и едва ли не самой вкусной новинкой обещает стать F# — функциональный язык глазами ребят из Кембриджской лаборатории Microsoft Research. Этот язык совсем новый и сейчас находится на стадии вылизывания в лабораториях Microsoft Research. Microsoft позиционирует F# как один из основных языков для .Net наряду с C# и VB.Net что скорее всего значит, что рано или поздно с ним придется столкнутся очень многим програмистам под .Net. Я, как и многие разработчики, никогда не сталкивался с чисто функциональными языками, но принцип «Готовь сани летом» еще не отменяли. Эта статья — мой личный маленький «Привет F#».
Почитать про Hello World на F#
Всего голосов 56: ↑40 и ↓16 +24
Просмотры 6.4K
Комментарии 77

Функциональное программирование для землян — функции

Python *


В статье про Python пользователь Xronos попросил рассказать о функциональном программировании (ФП). Поскольку я одно время довольно плотно занимался с Lisp, я хотел бы немножко рассказать об этом. Сразу хочу сказать, что о чистом ФП речь не идет. Я расскажу о более простых и более применимых приемах на примере языка Python.

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

1. Metaprogramming patterns — 25кю. Метод eval

Ruby *
Программирование, которым я периодически по-прежнему занимаюсь, постепенно меняет свой стиль и всё больше связано с метапрограммированием. При этом нельзя сказать, что обычное программирование мне опостылело. Просто как любой программист, я ищу пути для всё большей модульности, краткости, внятности и гибкости кода, и в метапрограммировании мне видится нераскрытый потенциал (несмотря на давний необозримый интернетовский флуд по метапрограммированию идущий ещё от Lisp). :)

Хочу начать вести блог, посвященный метапрограммированию на Ruby.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 19K
Комментарии 12

Функциональное программирование для землян — списки

Python *
Продолжаю свое небольшое введение в функциональное программирование. На этот раз речь пойдет о списках и методах их обработки в функциональном стиле.

Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Просмотры 8.7K
Комментарии 42

2. Metaprogramming patterns — 22кю. Reuse в малом — bang!

Ruby *
На этот раз буду рассказывать не только про метапрограммирование, но и про Ruby, а также про алгоритмы — сегодня вспомним классику и посмотрим, как она нам явится в Ruby-строках реализации метода qsort. Блог только начинается, про настоящее метапрограммирование пока говорить рано, поэтому позволю себе отступления от основной темы.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 2.8K
Комментарии 3

континуации и stateful веб-программирование (Updated!)

Разработка веб-сайтов *
Идея совсем не нова. Идея древна.
Однако большинство наблюдаемых вокруг веб-фреймворков упорно игнорируют эту идею.

Она заключается в том, чтобы использовать континуации (continuations) для магического превращения RESTful (stateless) веб-приложений в более удобный и привычный stateful формат.
Читать дальше →
Всего голосов 44: ↑37 и ↓7 +30
Просмотры 2.3K
Комментарии 95

Prett Parsing — метод Вогана Пратта для разбора выражений

Алгоритмы *
В тему компиляций и вычислений выражений.

В далёком 1973 году Воган Прэтт (Vaughan Pratt) предложил простой и эффективный метод разбора выражений, не использующий ни автоматы, ни грамматику как таковую.

Идея заключается в том, что каждый символ (token) наделяется свойствами:
lbp = приоритет связывания символа слева,
nud = функция, определяющая результат применения оператора в начале выражения,
led = функция, определяющая результат применения в середине выражения.

Основной разбор осуществляется по схеме:
разбор(приоритет продолжения):
    вытолкнуть символ из входного потока
    результат = вызов nud этого символа
    пока приоритет lbp следующего в потоке символа > приоритета продолжения:
        вытолкнуть символ из входного потока
        результат = применени led этого символа к текущему результату

Константы и переменные имеют приоритет связывания 0, а функция nud возвращает их значение (или ссылку). Поэтому применение разбора к константам сразу возратит их значение.
Для бинарных операторов функция led рекурсивно вызывает продолжение разбора (справа) вплоть до более низкого приоритета, и делает что-нибудь с уже накопленым (слева) результатом, и полученным рекурсивно.
Результат применения оператора аггрегируется для внешнего вызова.
Много-арные операторы — получают аргументы дополнительным вызовом функции разбора.
Префиксные операторы делаются с помощью определения для них функции nud.
Для правостороннего связывания меняется приоритет продолжения рекурсивного разбора.

На сайте effbot.org приводится подробная реализация на питоне.
Там же есть ссылки для жаваскрипта и схемы.
наглядный пример на питоне
Всего голосов 38: ↑36 и ↓2 +34
Просмотры 4.7K
Комментарии 15

Рекурсия с помощью Y–комбинатора

Python *
Поводом для написания этой статьи стало желание разобраться с тем, как работает Y-комбинатор.

Чтобы мозги не ржавели и работали как часы, я стараюсь пробовать новые и необычные вещи.
Интереса ради, я скомпилировал Lua 5.x под DOS, с этим никаких проблем не было, но при проверке Lua на её стандартных тестах, я обнаружил код вычисления факториала, работу которого я не понял.
Но ясно осознал, что это нечто относится к функциональному программированию.

Читать дальше →
Всего голосов 36: ↑35 и ↓1 +34
Просмотры 7.6K
Комментарии 38

3. Metaprogramming patterns — 20 кю. Замыкания

Ruby *
В предыдущем посте мы затронули важнейшую концепцию — замыкание (closure).
Суть этой концепции в том, что в любой блок как бы заключается «весь окружающий мир» так, как он виден в контексте, где блок создается. Правильнее сказать, что в блок заключается не весь окружающий мир (пространство имён), а фиксируется точка зрения на окружающий мир (пространство имён).
Читать дальше →
Всего голосов 32: ↑27 и ↓5 +22
Просмотры 5K
Комментарии 8

4. Metaprogramming patterns. 19 кю. Спасение утопающих дело рук самих утопающих

Ruby *
Предположим, что у вас есть библиотечный метод, который иногда кидает ексепшены.
Этот метод библиотечный в том смысле, что вы не хотите трогать руками тот файл, где он определён, так как этот файл, например, относится к библиотеке, которая регулярно обновляется, и ваши изменения после каждого обновления будут теряться, если вы специально не позаботитесь о их сохранении.
Такие методы принято менять в своем собственном коде — в динамических языках можно прямо в своем коде переписать избранный метод избранного класса.
Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 2.5K
Комментарии 7