Skip to content

Instantly share code, notes, and snippets.

@gregberns
Last active March 13, 2016 23:15
Show Gist options
  • Save gregberns/9bedbd8762a691a32f98 to your computer and use it in GitHub Desktop.
Save gregberns/9bedbd8762a691a32f98 to your computer and use it in GitHub Desktop.
FizzBuzz actually can get quite interesting
function FizzBuzz(i, end) {
if (i > end) return;
if (i % 3) {
console.log('fizz')
}
if (i % 5) {
console.log('buzz')
}
console.newLine()
FizzBuzz(i+1, end);
}
FizzBuzz(0, 100)
function FizzBuzz(i, end) {
if (i > end) return;
var p = '';
if (i % 3 === 0) {
p = 'fizz';
}
if (i % 5 === 0) {
p += 'buzz';
}
console.log(p || i);
FizzBuzz(i + 1, end);
}
FizzBuzz(1, 100);
function FizzBuzz(i) {
if (i > 1)
FizzBuzz(i - 1);
var p = '';
if (i % 3 === 0) {
p = 'fizz';
}
if (i % 5 === 0) {
p += 'buzz';
}
console.log(p || i);
}
FizzBuzz(100);
function FizzBuzz(i) {
if (i > 1)
FizzBuzz(i - 1);
var p = (i % 3) ? '' : 'fizz';
p += (i % 5) ? '' : 'buzz';
console.log(p || i);
}
FizzBuzz(100);
function FizzBuzz(i, func) {
if (i > 1)
FizzBuzz(i - 1, func);
var p = (i % 3) ? '' : 'fizz';
p += (i % 5) ? '' : 'buzz';
func(p || i);
}
function MONAD() {
return function unit(value) {
var monad = Object.create(null);
monad.bind = function (func, func2) {
return func(value, func2);
};
return monad;
};
}
var unit = MONAD();
var monad = unit(16);
monad.bind(FizzBuzz, console.log);
function MONAD() {
return function unit(value) {
var monad = Object.create(null);
monad.something = function (func, func2) {
//return func(value, func2);
func(value, func2);
return monad;
};
return monad;
};
}
var unit = MONAD();
var monad = unit(16);
monad.something(FizzBuzz, console.log).something(FizzBuzz, console.log);
function MONAD() {
return function unit(value, func) {
var monad = Object.create(null);
monad.exec = function (func2) {
//return func(value, func2);
func(value, func2);
return monad;
};
return monad;
};
}
var unit = MONAD();
var monad = unit(16, FizzBuzz);
monad.exec(console.log);
function MONAD() {
return function unit(value) {
var monad = Object.create(null);
monad.exec = function (func2) {
//return func(value, func2);
_FizzBuzz(value, func2);
return monad;
};
function _FizzBuzz(i, func) {
if (i > 1)
FizzBuzz(i - 1, func);
var p = (i % 3) ? '' : 'fizz';
p += (i % 5) ? '' : 'buzz';
func(p || i);
return;
}
return monad;
};
}
var unit = MONAD();
var monad = unit(16);
monad.exec(function (s){
console.log(s)
});
////
function MONAD() {
var prototype = Object.create(null);
function unit(value) {
var monad = Object.create(prototype);
monad.bind = function (func, args) {
func(value, ...args);
return monad;
};
return monad;
};
unit.lift = function(name, func) {
prototype[name] = function(...args) {
return unit(this.bind(func, args));
};
return unit;
};
return unit;
}
function FizzBuzz(i, func) {
if (i > 1)
FizzBuzz(i - 1, func);
var p = (i % 3) ? '' : 'fizz';
p += (i % 5) ? '' : 'buzz';
func(p || i);
return;
};
var unit = MONAD();
unit.lift('fizzbuzz', FizzBuzz)
var monad = unit(16);
monad.fizzbuzz(console.log)
monad.fizzbuzz(console.log)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment