code: function compose(...fns) {
    const reversedFns = fns.reverse();
    return value => reversedFns.reduce((acc, fn) => fn(acc), value);
  }
docs: **Composes two or more transducer functions into a single transducer function.**
  
  Each function that takes a transducer function (`{@link module:xduce.sequence|sequence}`,
  `{@link module:xduce.into|into}`, etc.) is only capable of accepting one of them. If there is a need to have
  several transducers chained together, then use `compose` to create a transducer function that does what all of them
  do.
  
  This operates only on {@link module:xduce~transducerFunction|transducer functions}, not on
  {@link module:xduce~transducer|transducers} themselves. There is no option for a shortcut form on a composed
  transducer function. They must be passed to functions that operate on them (`{@link module:xduce.sequence|sequence}`
  and the like).
  
  NOTE: In functional programming, a compose function is generally ordered so that the first-executed function is
  listed last. This is done in the opposite way, with the first transducer executing first, etc. This is more sensible
  for transducer functions.
  
  ```
  const add1 = x => x + 1;
  const odd = x => x % 2 !== 0;
  
  const xform = compose(map(add1), filter(odd), take(3));
  
  const result = sequence([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], xform);
  // result = [3, 5, 7];
  ```
  
  @memberof module:xduce
  
  @param {...module:xduce~transducerFunction} fns One or more function that each create a transducer object that
  defines the transformation being done to a collection's elements. Any of the
  {@link module:xduce.transducers|transducers} in this library can produce a suitable transducer function.
  @return {module:xduce~transducerFunction} A transducer function that produces a transducer object that performs
  *all* of the transformations of the objects produced by the input transducer functions.