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

Elm *

Функциональный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Сравнение Elm и Reflex

Время на прочтение16 мин
Количество просмотров3.9K

Введение


В этой статье мы поговорим о двух принципиально разных подходах к реактивному программированию.


Elm, в отличие от Reflex — это целый язык, а не библиотека, поэтому сравнивать их не очень корректно. Тем не менее, можно показать разницу между подходами, а также рассказать, какие практические трудности могут возникнуть при разработке с использованием каждой из технологий.

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

Новости

Пример Model-View-Update архитектуры на F#

Время на прочтение8 мин
Количество просмотров6.6K

Кому-то не нравился Redux в React из-за его имплементации на JS?


Мне он не нравился корявыми switch-case в reducer'ах, есть языки с более удобным pattern matching, и типы лучше моделирующие события и модель. Например, F#.
Эта статья — разъяснение устройства обмена сообщениями в Elmish.

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

Elm. Удобный и неловкий. Http, Task

Время на прочтение5 мин
Количество просмотров4.5K

Продолжим говорить о Elm 0.18.


Elm. Удобный и неловкий
Elm. Удобный и неловкий. Композиция
Elm. Удобный и неловкий. Json.Encoder и Json.Decoder


В этой статье рассмотрим вопросы взаимодействия с серверной частью.

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

Elm. Удобный и неловкий. Json.Encoder и Json.Decoder

Время на прочтение5 мин
Количество просмотров5.1K

Продолжим говорить о Elm 0.18.


Elm. Удобный и неловкий
Elm. Удобный и неловкий. Композиция
Elm. Удобный и неловкий. Http, Task


В этой статье рассмотрим вопросы энкодеров/декодеров.


Декодеры/энкодеры используются для:


  1. преобразование ответов от сторонних ресурсов (Http, WebSocket и прочее);
  2. взаимодействия через порты. Подробнее про порты и нативный код расскажу в следующих статьях.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии5

Истории

Elm. Удобный и неловкий

Время на прочтение3 мин
Количество просмотров23K

Поговорим о Elm.


Elm — функциональный язык программирования для frontend-разработки. Синтаксис похож на Haskell, но значительно упрощен и специализирован. Исходный код на Elm компилируется в нативный JavaScript. Скомпилированный JavaScript содержит код приложения, которое управляют поддеревом DOM.

Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии8

Инструменты разработчика на языке Elm

Время на прочтение7 мин
Количество просмотров8.1K

С момента публикации статьи Основы разработки на языке Elm (руководство по инструментарию для начинающих) прошло полтора года. За это время в инструментарии для языка разработки веб-интерфейсов Elm произошли многочисленные изменения: появилась более удобная система сборки с возможностью генерации нового проекта; для редактора Atom набор дополнений в некоторых отношениях теперь лучше, чем для популярного тогда среди разработчиков на Elm редактора LightTable; заработал инспектор состояния приложения. Давайте пройдёмся по этому набору на простом примере.


Инструменты разработчика на языке Elm: обложка

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

Паттерн Model-Update-View и зависимые типы

Время на прочтение13 мин
Количество просмотров10K


Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие события имеют смысл для конкретных состояний программы.

Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.

Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

ROS, ELM и черепашка

Время на прочтение6 мин
Количество просмотров5.9K
Robotic Operation System позволяет взаимодействовать своим подсистемам по механизмам «подписка на топик» и «вызов сервиса» по своему специальному протоколу. Но есть пакет rosbridge, который позволяет общаться с ROS извне с помощью websocket. Описанный протокол позволяет выполнять основные операции по взаимодействию с другими подсистемами.

ELM — очень простой и элегантный язык, компилирующийся в javascript и отлично подходящий для разработки интерактивных программ.

Я решил совместить приятное с полезным и изучать ROS (по которой сейчас идет курс) и ELM вместе.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии5

Основы разработки на языке Elm (руководство по инструментарию для начинающих)

Время на прочтение4 мин
Количество просмотров23K

От автора: вместо этой статьи рекомендую прочитать более актуальную Инструменты разработчика на языке Elm.


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


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


LightTable с запущенным приложением на Elm

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии13