Комментарии 11
Срочно нужно средство, как остановить кровотечение из глаз после увиденного кода...
Очень сложно. И ничего не понятно
После фразы:
Здесь и далее для примеров я буду использовать упрощенный функциональный язык
Вы меня потеряли.
Во первых поди разберись в вашем вымышленном языке. А во вторых, почему не JavaScript как написано в заголовке статьи, или тот же Haskell?
ПС: Тема и так сложная, а вы еще и новый язык туда засунули, на добивочку. Дальше не читал.
Все просто. Haskell я не помню так хорошо, чтобы писать на нем, а Javascript не подходит, потому что все это - это пересказ научной статьи, где все примеры на функциональном языке. Статья (оригинальная) и так сложная, чтобы затуманивать ее Javascript, где нет половины фич. Просто попробуйте примеры в конце и если заинтересует почему такой дикий код работает, то почитайте и статью. Псевдо язык - это просто некий ML диалект, все ML языки выглядят более-менее одинаково.
Тут где-то уже бегал чувак с двумя постами про эффекты в JS. Тоже рассказывал о том, как они прекрасны и упрощают(??) код, с подобными вырвыглазыми примерами. Весна что ли
По-моему, когда вы упомянули "Koko (.NET)", вы имели в виду Koka (https://koka-lang.github.io/) - ныне этот язык отвязан от .NET: компилятор порождает бинарный код для разных платформ через промежуточное представление на C.
Ещё один not-invented-here псевдоязык. Зачем? Чтобы кровь из глаз пошла?
Взяли бы синтаксис хаскелла и не мучали бы людей. Или, если на то пошло, взяли бы синтаксис окамла. Вот наверняка же одиночные апострофы - это оттуда прилетело?
В случае Free монады начальными элементами будут, грубо говоря, простые типы, а операциями - рекурсивные типы данных, являющиеся функторами (не будем вдаваться в подробности, поскольку для дальнейшего это не имеет значения). Поскольку функторы обладают приятным свойством ассоциативности (не важны скобки в композиции), то их можно спокойно комбинировать, а значит получать монадические свойства на халяву (free в другом смысле).
Это очень плохая идея - использовать перегруженные термины, да ещё и походя.
В хаскелле функтором называют одно, в камле - другое. Как понять, о чём речь идёт именно здесь? В статье, ясен пень, теоркатовско-хаскелловские...
Алгебраические эффекты на Javascript