Created
September 3, 2017 18:51
-
-
Save vieiralucas/a0be70ca2d92c5027104253df05b5458 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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