Wpis z mikrobloga

Jestem na etapie nauki programowania funkcyjnego w #javascript . Chodzi o ideę komponowania funkcji (function composition) po części czaję ale nie do końca, pewnie dlatego że nie mam odniesienia do konkretnych przykładów. Poleci ktoś jakiś artykuł który najlepiej mi wytłumaczy owo zagadnienie?

#naukaprogramowania #webdev
  • 9
  • Odpowiedz
@trustME: Czytałem. Ktoś chyba musi mi to w prostych słowach wytłumaczyć. Załóżmy że:

const compose = (f, g) => (a) => f(g(a));

const floorAndToString = compose((val) => val.toString(), Math.floor);

console.log(floorAndToString(3.1456));

Wszystko działa. Natomiast co w przypadku gdy chcę np. zastąpić znaki i przekonwerytować do toUpperCase?:

const compose = (f, g) => (a) => f(g(a));

const Mystring = "ala-ma-kota";

const prepareTxt = compose((txt) => txt.toUpperCase(), txt.replace("-", " "));

console.log(prepareTxt(text));

Wtedy konsola wypluwa
  • Odpowiedz
Nie mogę już edytować. Błąd w drugim przykładzie powinno być ofc:

const compose = (f, g) => (a) => f(g(a));

const myString = "ala-ma-kota";

const prepareTxt = compose((txt) => txt.toUpperCase(), txt.replace("-", " "));

console.log(prepareTxt(myString));
  • Odpowiedz
@michal42: Np tak:

const compose = (f, g) => (a) => f(g(a));

const myString = "ala-ma-kota";

const prepareTxt = compose((txt) => txt.toUpperCase(), (str) => str.replace(/-/g, ' '));

console.log(prepareTxt(myString));
  • Odpowiedz
@ownadi: Ale mogę to napisać też tak:

const myString = "i-don't-know-what-i'm-doing.";

const replaceStrAndUpperCaseIt = (str, toReplace, replace) => str.toUpperCase(str.replace(toReplace, replace));

console.log(replaceStrAndUpperCaseIt(myString, "-", " "));

Więc w tym przypadku to już nie będzie skomponowana funkcja?
  • Odpowiedz