HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

FizzBuzz in JavaScript using Ramda

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
javascriptramdausingfizzbuzz

Problem

Just getting up to speed in Ramda, I have implemented this:

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 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.