LINUX.ORG.RU

Чисто-функциональный иммутабельный словарь на js

 , ,


1

1

Коллега сказал, что это не возможно сделать, но:

let assoc = (dict, key, value) => {
  return (getKey) => {
    if (getKey == key)
      return value;
    else if (dict === null)
      return undefined;
    else
      return dict(getKey);
  };
};

let d1 = assoc(null, "a", 1);
let d2 = assoc(d1, "b", 2);

console.log(d2("b"), d2("a"), d1("a"), d1("b"));
// 2, 1, 1, undefined


Последнее исправление: holuiitipun (всего исправлений: 2)

Ответ на: комментарий от javaQest

Похоже, ты, вообще говоря, вообще недопонимаешь ООП-подход, что это вообще такое.

А мне кажется что вы не можете ни в ооп, ни в фп)

Твоя фабрика — это, блеать, не класс, а конструктор объектов.

С натужкой можно назвать это фабрикой.

Класс твой — это словарь.

Там нет классов, есть только абстрактные структураы данных.

Ты его должен расширять и специализировать, а не штамповку.

К счастью, не должен.

holuiitipun
() автор топика
Ответ на: комментарий от javaQest

Относительно примера кода, ининимус, ты умеешь в js более чем никак.

holuiitipun
() автор топика
Ответ на: комментарий от holuiitipun

К счастью, не должен.

разговор то ведь не о том, нужно ли это в каком то конкретном случае, а о том, может ли заменить ФП подход ООП, хотя бы в какой-то степени, хотя бы имитировать его. Выясняем, что в общем случае нет.

javaQest
()
Ответ на: комментарий от javaQest

Не нужно тащить ооп привычки в фп, там свои паттерны и бест-практисы.

holuiitipun
() автор топика

Зачем велосипедить immutable.js от крупной компании с готовым юзкейсом и оптимизациями производительности?

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.