Comprensione dei trasduttori, perché questo non è un trasduttore

1

Attualmente sto imparando la programmazione funzionale e sto cercando di imparare un nuovo concetto: i trasduttori.

In realtà sto ottenendo il punto di vista teorico, come se fosse una mappa / riduzione avanzata che mira a fornire una migliore complessità temporale su operazioni su array / oggetto (come trasformare / filtro / ridurre).

Ecco il mio codice attuale, mi sento un po 'strano a riguardo. Non riesco a capire cosa c'è che non va, ma non è un trasduttore per me (odore di codice?)

Puoi aiutarmi a capire il concetto o come regolare questo frammento di codice per creare un trasduttore "reale"?

const assert = require("assert");
const numbers = [1, 2, 10, 23, 238];

const createFilter = predicate => element => predicate(element);
const createMapper = transform => element => transform(element);
const reducer = (state, element) => state.concat(element);

const isEven = createFilter(i => i % 2 === 0);
const double = createMapper(i => i * 2);

const createTransducer = (map, filter, reducer) => (acc, current) =>
  filter(current) ? reducer(acc, map(current)) : acc;

const transducer = createTransducer(double, isEven, reducer);

/* Testing part */
const expectedResult = [4, 20, 476];
assert.deepEqual(numbers.reduce(transducer, []), expectedResult);
console.log("All test passed :D");
    
posta mfrachet 04.04.2018 - 17:28
fonte

0 risposte

Leggi altre domande sui tag