Skip to content

Instantly share code, notes, and snippets.

@vieiralucas
Created September 3, 2017 18:51
Show Gist options
  • Select an option

  • Save vieiralucas/a0be70ca2d92c5027104253df05b5458 to your computer and use it in GitHub Desktop.

Select an option

Save vieiralucas/a0be70ca2d92c5027104253df05b5458 to your computer and use it in GitHub Desktop.
const compose = (...fn) => x =>
fn.reduceRight((prevResult, func) => func(prevResult), x)
/*
const randomFloat = n => Math.random() * n
const nToStr = n => String(n)
const pad4 = str => str.padStart(4, '0')
const randomInt = compose(pad4, nToStr, Math.floor, randomFloat)
console.log(randomInt(100))
process.exit(0)
const { curry } = require('rambda')
/*
const fruits = [
{ code: 0, name: 'banana' },
{ code: 1, name: 'apple' },
{ code: 2, name: 'kiwi' },
{ code: 3, name: 'pineapple' },
{ code: 4, name: ' grape ' },
]
const name = ({ name }) => name
const trim = s => s.trim()
const capitalize = s => s[0].toUpperCase() + s.substr(1)
const compareStrings = (s1, s2) => s1.localeCompare(s2)
const toString = fruits =>
fruits
.map(name)
.map(trim)
.map(capitalize)
.sort(compareStrings)
.join(', ')
console.log(toString(fruits))
// 'Apple, Banana, Grape, Kiwi, Pineapple'
*/
const curry = fn => (...partialArgs) => {
if (partialArgs.length >= fn.length) {
return fn(...partialArgs)
}
const restArgumentsFn = previousArguments => (...restArguments) => {
const allArguments = previousArguments.concat(restArguments)
if (allArguments.length >= fn.length) {
return fn(...allArguments)
}
return restArgumentsFn(allArguments)
}
return restArgumentsFn(partialArgs)
}
const sum3 = (a, b, c) => a + b + c
const sum3Curried = curry(sum3)
sum3Curried(1)(2)(3)
// 6
const R = require('ramda')
const fruits = [
{ code: 0, name: 'banana' },
{ code: 1, name: 'apple' },
{ code: 2, name: 'kiwi' },
{ code: 3, name: 'pineapple' },
{ code: 4, name: ' grape ' },
]
const capitalize = s => s[0].toUpperCase() + s.substr(1)
const compareStrings = (s1, s2) => s1.localeCompare(s2)
const toString = R.compose(
R.join(', '),
R.sort(compareStrings),
R.map(R.compose(capitalize, R.trim, R.path('name')))
)
console.log(toString(fruits))
// 'Apple, Banana, Grape, Kiwi, Pineapple'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment