Skip to content

Instantly share code, notes, and snippets.

View dengjonathan's full-sized avatar

Jon Deng dengjonathan

View GitHub Profile
'}
@dengjonathan
dengjonathan / oopFunc.js
Created November 16, 2016 03:54
oop inheritance
//OOP
class Parent {
constructor(name, job) {
this.name = name;
this.job = job;
}
}
const solo = new Parent('Han', 'smuggler'); // {name: 'Han', job: 'smuggler'}
@dengjonathan
dengjonathan / oop.js
Created November 16, 2016 03:57
oop inheritance
//OOP
class Parent {
constructor(name, job) {
this.name = name;
this.job = job;
}
}
const solo = new Parent('Han', 'smuggler'); // {name: 'Han', job: 'smuggler'}
@dengjonathan
dengjonathan / functional.js
Created November 16, 2016 04:22
composition
const giveProp = (propName, prop, obj) => Object.assign({}, obj, {[propName]: prop});
const curry = (func, arg) => {
return (...args) => func(arg, ...args);
};
const giveName = curry(giveProp, 'name');
const giveJob = curry(giveProp, 'job');
const giveHero = curry(giveProp, 'hero');
@dengjonathan
dengjonathan / pure`.js
Created November 21, 2016 20:01
pure examples 1
// pure
const addOne = num => num + 1;
//impure: modifies input variable
const addOneImpure = num => num++;
//pure
const addOneToAll = arr => arr.map(addOne);
//impure: modifies input array
@dengjonathan
dengjonathan / curry.js
Last active November 21, 2016 20:48
currying
//Ramda
const R = require('ramda');
const giveProp = (propName, prop, obj) => Object.assign({}, obj, {[propName]: prop});
const givePropCurry = R.curry(giveProp);
const giveName = givePropCurry('name');
const giveJob = givePropCurry(giveProp, 'job');
const giveHero = givePropCurry('hero');
@dengjonathan
dengjonathan / curry.js
Last active November 21, 2016 21:05
Ramda curry
//Ramda
const R = require('ramda');
const giveProp = (propName, prop, obj) => Object.assign({}, obj, {[propName]: prop});
const givePropCurry = R.curry(giveProp);
const giveName = givePropCurry('name');
const giveJob = givePropCurry('job');
const giveHero = givePropCurry('hero');
@dengjonathan
dengjonathan / ramdaCurry.js
Last active November 21, 2016 21:23
ramda curry
//Ramda
const R = require('ramda');
//this is the same as
const makeRen = obj => giveHero(
'Darth Vader',
giveName('Kylo', obj)
);
// this
@dengjonathan
dengjonathan / composition.js
Last active November 21, 2016 21:35
Composition
const R = require('ramda');
const giveProp = (propName, prop, obj) => Object.assign({}, obj, {[propName]: prop});
const givePropCurry = R.curry(giveProp);
const giveName = givePropCurry('name');
const giveJob = givePropCurry('job');
const giveHero = givePropCurry('hero');
@dengjonathan
dengjonathan / compose.js
Last active November 21, 2016 21:38
compose example
//Ramda
const R = require('ramda');
const giveProp = (propName, prop, obj) => Object.assign({}, obj, {[propName]: prop});
const givePropCurry = R.curry(giveProp);
const giveName = givePropCurry('name');
const giveJob = givePropCurry('job');
const giveHero = givePropCurry('hero');
const giveJobSmuggler = giveJob('smuggler')