Phrase reversals: Difference between revisions

(Add Scala Implementation)
Line 1,009:
 
=={{header|JavaScript}}==
===ES5===
 
<lang JavaScript>(function (p) {
return [
Line 1,027:
attesor edoc esarhp lasrever
reversal phrase code rosetta</pre>
 
===ES6===
<lang JavaScript>(() => {
'use strict';
 
// words :: String -> [String]
const words = s => s.split(/\s+/);
 
// unwords :: [String] -> String
const unwords = xs => xs.join(' ');
 
// reverse :: [a] -> [a]
const reverse = (xs) => {
return typeof xs === 'string' ? (
xs.split('')
.reverse()
.join('')
) : xs.slice(0)
.reverse();
};
 
// map :: (a -> b) -> [a] -> [b]
const map = (f, xs) => xs.map(f);
 
 
// TEST
// show :: a -> String
const show = x => JSON.stringify(x, null, 2);
 
const strPhrase = 'rosetta code phrase reversal';
 
return show({
reversedString: reverse(strPhrase),
eachWordReversed: unwords(map(reverse, words(strPhrase))),
wordOrderReversed: unwords(reverse(words(strPhrase)))
});
})();</lang>
 
{{Out}}
<pre>{
"reversedString": "lasrever esarhp edoc attesor",
"eachWordReversed": "attesor edoc esarhp lasrever",
"wordOrderReversd": "reversal phrase code rosetta"
}</pre>
 
=={{header|jq}}==
9,659

edits