patternjavascriptMinor
FizzBuzz in JavaScript using Ramda
Viewed 0 times
javascriptramdausingfizzbuzz
Problem
Just getting up to speed in Ramda, I have implemented this:
Can I improve this, or is there a more canonical way of doing this in Ramda?
var R = require('ramda');
var divisibleBy = (b) => R.compose(R.equals(0), R.flip(R.modulo)(b))
var fizzbuzz = R.map(R.cond([
[R.both(divisibleBy(3), divisibleBy(5)), R.always('FizzBuzz')],
[divisibleBy(3), R.always('Fizz')],
[divisibleBy(5), R.always('Buzz')],
[R.T, R.identity]
]));
console.log(fizzbuzz(R.range(1,101)))Can I improve this, or is there a more canonical way of doing this in Ramda?
Solution
This got some discussion in the Ramda Gitter Room. Although several people had different suggestions, my feeling -- and I believe the consensus -- was that this is very well done, and there's little to improve.
If you want it slightly more points-free, you could write
But, no, I don't think there is any more canonical way of doing this in Ramda.
BTW, I'm one of the original authors of Ramda, and as far as I've seen, yours is the very first Ramda fizzbuzz in existence!
If you want it slightly more points-free, you could write
divisibleBy like this:var divisibleBy = R.curry(R.pipe(R.flip(R.modulo), R.equals(0)));But, no, I don't think there is any more canonical way of doing this in Ramda.
BTW, I'm one of the original authors of Ramda, and as far as I've seen, yours is the very first Ramda fizzbuzz in existence!
Code Snippets
var divisibleBy = R.curry(R.pipe(R.flip(R.modulo), R.equals(0)));Context
StackExchange Code Review Q#108449, answer score: 4
Revisions (0)
No revisions yet.