Изучайте RamdaJS интерактивным способом


RamdaJS, библиотека, упрощающая функциональное программирование на JavaScript, получила собственную игровую площадку. Мы осмотрелись и дали рекомендации.

RamdaJS

Но почему именно RamdaJS?

Разве я не могу делать FP в ванильном Javascript?

Конечно, можно, но разница в том, что RamdaJS – это библиотека, специально разработанная для функционального стиля программирования:

RamdaJS подчеркивает более чистый функциональный стиль. Неизменяемость и функции без побочных эффектов лежат в основе его философии проектирования. Это поможет вам выполнить работу с помощью простого и элегантного кода.

Рамда-функции автоматически становятся каррированными. Это позволяет вам легко создавать новые функции из старых, просто не указывая конечные параметры.

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

Проблема в том, что Ramda имеет около 200 функций, поэтому может быть трудно понять, какие из них и когда использовать. По этой причине существует шпаргалка, в которой “перечислены наиболее распространенные действия, которые вы можете захотеть выполнить, и функции, которые, скорее всего, подойдут для этой задачи”.

Она действует как указатель. Например, когда мне нужно “изменить каждое значение”, я нахожу запись, которая указывает на соответствующую функцию – в данном случае это “map”.

Очень полезно, но есть возможности для улучшения. И это обеспечивает интерактивная игровая площадка “Изучайте Ramda интерактивным способом”, которая выводит помощь на другой уровень. Вместо поиска в статичном списке, это пользовательский интерфейс, с помощью которого вы можете найти подходящий метод интерактивно!

Он начинается с простого выпадающего списка сценариев “у меня есть”, который сопоставляется с выпадающим списком действий “хотел бы”. Ваш выбор формирует предложение типа “У меня есть список, и я хотел бы изменить каждое значение”, действие, которое открывает соответствующую документацию Rambda и примеры кода.

Изучайте RamdaJS интерактивным способом

Для приведенного выше примера и функции map:

R.map
http://ramdajs.com/docs#map

Functor f => (a -> b) -> f a -> f b
  • Принимает функцию и вектор, применяет функцию к каждому из значений вектора и возвращает вектор той же формы.

Ramda предоставляет подходящие реализации map для Array и Object, поэтому эта функция может быть применена к [1, 2, 3] или {x: 1, y: 2, z: 3}.

  • Отправляет в метод map второго аргумента, если он присутствует.
  • Действует как преобразователь, если преобразователь указан в позиции списка.
  • Также рассматривает функции как функторы и компонует их вместе.
const double = x => x * 2;
R.map(double, [1, 2, 3]); //=> [2, 4, 6]
R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}
Изучайте RamdaJS

Другим случаем может быть “У меня есть список, и я хотел бы выбрать значения с самого начала”, и так далее.

Выпадающее поле сценариев также содержит объекты, функции, логику, отношения и математику, поэтому можно прочитать: “У меня есть функция, и я хотел бы частично применить функцию”.

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

  • я могу комбинировать функции, возвращающие обещания
  • применять список функций к каждому аргументу и собирать результаты
  • частично применить функцию
  • завернуть функцию
  • узнать, удовлетворяет ли значение списка двум предикатам
  • выбирать значения списка на основе пользовательской логики
  • узнать, удовлетворяет ли значение определенного ключа объекта пользовательскому предикату

Если вы хотите действительно узнать о Ramda, я бы рекомендовал начать с отличного (и бесплатного) онлайн-курса Functional Programming Patterns With RamdaJS от Educative и использовать эту интерактивную шпаргалку в процессе занятий.


Добавить комментарий