RosettaCodeData/Task/Repeat-a-string/JavaScript/repeat-a-string-4.js

28 lines
701 B
JavaScript

(() => {
'use strict';
// repeat :: Int -> String -> String
const repeat = (n, s) =>
concat(replicate(n, s));
// GENERIC FUNCTIONS ------------------------------------------------------
// concat :: [[a]] -> [a] | [String] -> String
const concat = xs =>
xs.length > 0 ? (() => {
const unit = typeof xs[0] === 'string' ? '' : [];
return unit.concat.apply(unit, xs);
})() : [];
// replicate :: Int -> a -> [a]
const replicate = (n, x) =>
Array.from({
length: n
}, () => x);
// TEST -------------------------------------------------------------------
return repeat(5, 'ha');
})();