<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Deep Dive Into Currying">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
// curry
'use strict';
var getGradeTest = function getGradeTest(passGrade) {
return function (failGrade) {
return function (average) {
return function (testScore) {
return testScore >= average ? passGrade : failGrade;
};
};
};
};
var tester = getGradeTest('Pass')('Fail')(0.5);
console.log(tester(0.7), tester(0.3));
// uncurry
var uncurriedGetGradeTest = function uncurriedGetGradeTest(passGrade, failGrade, average, testScore) {
return testScore >= average ? passGrade : failGrade;
};
console.log(uncurriedGetGradeTest('ok', 'ko', 0.5, 0.6));
</script>
<script id="jsbin-source-javascript" type="text/javascript">// curry
const getGradeTest =
passGrade =>
failGrade =>
average =>
testScore =>
testScore >= average ? passGrade : failGrade;
const tester = getGradeTest('Pass')('Fail')(0.5);
console.log(tester(0.7), tester(0.3));
// uncurry
const uncurriedGetGradeTest =
(passGrade, failGrade, average, testScore) =>
testScore >= average ? passGrade : failGrade;
console.log(uncurriedGetGradeTest('ok', 'ko', 0.5, 0.6));
</script></body>
</html>