Created
July 7, 2018 07:30
-
-
Save tsaiDavid/7d90fef8ce5473c54b17e23a71c2a27d to your computer and use it in GitHub Desktop.
JS Bin // source http://jsbin.com/romun
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
<!DOCTYPE html> | |
<html> | |
<head> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script> | |
<meta charset="utf-8"> | |
<title>JS Bin</title> | |
<script src="https://frontendmasters.com/assets/resources/functionaljs/v2/pointfree.browser.js"></script> | |
<script src="https://frontendmasters.com/assets/resources/functionaljs/v2/data.maybe.umd.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.8.0/ramda.min.js"></script> | |
</head> | |
<body> | |
<script id="jsbin-javascript"> | |
var _ = R; | |
/***************************************** | |
C U R R Y I N G E X A M P L E | |
******************************************/ | |
// We've got a nice multiply function. | |
// It takes two arguments. | |
console.log( _.multiply(3, 4) ); | |
// But it has been secretly curried already | |
// so we can feed it fewer arguments and it | |
// will return a new function. | |
// | |
// How about making a function to double a | |
// value? Done. | |
var double = _.multiply(2); | |
console.log( double(13) ); | |
/***************************************** | |
Y O U R T U R N | |
******************************************/ | |
// _.split pulls a string apart around a | |
// given value | |
console.log( _.split('i', 'mississippi') ); | |
// -- Challenge 1 ------------------------ | |
// Make a function called "words" which | |
// returns a list of words in a string. | |
// Use only the split function and | |
// currying. | |
console.log("Testing challenge 1..."); | |
var words = undefined; // change this | |
assertEqualArrays( | |
['one', 'two', 'three'], | |
words('one two three') | |
); | |
console.log("passed"); | |
// -- Challenge 2 ------------------------ | |
// Create a function to triple every | |
// number in a list using only | |
// _.multiply and _.map. | |
console.log("Testing challenge 2..."); | |
var tripleList = undefined; | |
assertEqualArrays([3,6,9], tripleList([1,2,3])); | |
console.log("passed"); | |
// -- Challenge 3 ------------------------ | |
// Create a function to find the largest | |
// number in a list. You can use the | |
// greater(a,b) function which returns the | |
// greater of its two inputs. You can do | |
// this with currying and one of the list | |
// functions _.map, _.filter, or _.reduce. | |
console.log("Testing challenge 3..."); | |
var greater = function(a,b) { | |
return a > b ? a : b; | |
}; | |
var max = _.indentity; | |
assertEqual(9, max([1,-3483,9,7,2])); | |
assertEqual(-1, max([-21,-3483,-2,-1])); | |
console.log("passed"); | |
console.log("All tests pass."); | |
/****************************************** | |
B A C K G R O U N D C O D E | |
*******************************************/ | |
function assertEqualArrays(x,y) { | |
if(x.length !== y.length) throw("expected "+x+" to equal "+y); | |
for(var i in x) { | |
if(x[i] !== y[i]) { | |
throw("expected "+x+" to equal "+y); | |
} | |
} | |
} | |
function assertEqual(x,y){ | |
if(x !== y) throw("expected "+x+" to equal "+y); | |
} | |
</script> | |
<script id="jsbin-source-html" type="text/html"><!DOCTYPE html> | |
<html> | |
<head> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"><\/script> | |
<meta charset="utf-8"> | |
<title>JS Bin</title> | |
<script src="https://frontendmasters.com/assets/resources/functionaljs/v2/pointfree.browser.js"><\/script> | |
<script src="https://frontendmasters.com/assets/resources/functionaljs/v2/data.maybe.umd.js"><\/script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.8.0/ramda.min.js"><\/script> | |
</head> | |
<body> | |
</body> | |
</html> | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">var _ = R; | |
/***************************************** | |
C U R R Y I N G E X A M P L E | |
******************************************/ | |
// We've got a nice multiply function. | |
// It takes two arguments. | |
console.log( _.multiply(3, 4) ); | |
// But it has been secretly curried already | |
// so we can feed it fewer arguments and it | |
// will return a new function. | |
// | |
// How about making a function to double a | |
// value? Done. | |
var double = _.multiply(2); | |
console.log( double(13) ); | |
/***************************************** | |
Y O U R T U R N | |
******************************************/ | |
// _.split pulls a string apart around a | |
// given value | |
console.log( _.split('i', 'mississippi') ); | |
// -- Challenge 1 ------------------------ | |
// Make a function called "words" which | |
// returns a list of words in a string. | |
// Use only the split function and | |
// currying. | |
console.log("Testing challenge 1..."); | |
var words = undefined; // change this | |
assertEqualArrays( | |
['one', 'two', 'three'], | |
words('one two three') | |
); | |
console.log("passed"); | |
// -- Challenge 2 ------------------------ | |
// Create a function to triple every | |
// number in a list using only | |
// _.multiply and _.map. | |
console.log("Testing challenge 2..."); | |
var tripleList = undefined; | |
assertEqualArrays([3,6,9], tripleList([1,2,3])); | |
console.log("passed"); | |
// -- Challenge 3 ------------------------ | |
// Create a function to find the largest | |
// number in a list. You can use the | |
// greater(a,b) function which returns the | |
// greater of its two inputs. You can do | |
// this with currying and one of the list | |
// functions _.map, _.filter, or _.reduce. | |
console.log("Testing challenge 3..."); | |
var greater = function(a,b) { | |
return a > b ? a : b; | |
}; | |
var max = _.indentity; | |
assertEqual(9, max([1,-3483,9,7,2])); | |
assertEqual(-1, max([-21,-3483,-2,-1])); | |
console.log("passed"); | |
console.log("All tests pass."); | |
/****************************************** | |
B A C K G R O U N D C O D E | |
*******************************************/ | |
function assertEqualArrays(x,y) { | |
if(x.length !== y.length) throw("expected "+x+" to equal "+y); | |
for(var i in x) { | |
if(x[i] !== y[i]) { | |
throw("expected "+x+" to equal "+y); | |
} | |
} | |
} | |
function assertEqual(x,y){ | |
if(x !== y) throw("expected "+x+" to equal "+y); | |
} | |
</script></body> | |
</html> |
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
var _ = R; | |
/***************************************** | |
C U R R Y I N G E X A M P L E | |
******************************************/ | |
// We've got a nice multiply function. | |
// It takes two arguments. | |
console.log( _.multiply(3, 4) ); | |
// But it has been secretly curried already | |
// so we can feed it fewer arguments and it | |
// will return a new function. | |
// | |
// How about making a function to double a | |
// value? Done. | |
var double = _.multiply(2); | |
console.log( double(13) ); | |
/***************************************** | |
Y O U R T U R N | |
******************************************/ | |
// _.split pulls a string apart around a | |
// given value | |
console.log( _.split('i', 'mississippi') ); | |
// -- Challenge 1 ------------------------ | |
// Make a function called "words" which | |
// returns a list of words in a string. | |
// Use only the split function and | |
// currying. | |
console.log("Testing challenge 1..."); | |
var words = undefined; // change this | |
assertEqualArrays( | |
['one', 'two', 'three'], | |
words('one two three') | |
); | |
console.log("passed"); | |
// -- Challenge 2 ------------------------ | |
// Create a function to triple every | |
// number in a list using only | |
// _.multiply and _.map. | |
console.log("Testing challenge 2..."); | |
var tripleList = undefined; | |
assertEqualArrays([3,6,9], tripleList([1,2,3])); | |
console.log("passed"); | |
// -- Challenge 3 ------------------------ | |
// Create a function to find the largest | |
// number in a list. You can use the | |
// greater(a,b) function which returns the | |
// greater of its two inputs. You can do | |
// this with currying and one of the list | |
// functions _.map, _.filter, or _.reduce. | |
console.log("Testing challenge 3..."); | |
var greater = function(a,b) { | |
return a > b ? a : b; | |
}; | |
var max = _.indentity; | |
assertEqual(9, max([1,-3483,9,7,2])); | |
assertEqual(-1, max([-21,-3483,-2,-1])); | |
console.log("passed"); | |
console.log("All tests pass."); | |
/****************************************** | |
B A C K G R O U N D C O D E | |
*******************************************/ | |
function assertEqualArrays(x,y) { | |
if(x.length !== y.length) throw("expected "+x+" to equal "+y); | |
for(var i in x) { | |
if(x[i] !== y[i]) { | |
throw("expected "+x+" to equal "+y); | |
} | |
} | |
} | |
function assertEqual(x,y){ | |
if(x !== y) throw("expected "+x+" to equal "+y); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment