import __ from "./placeholderArgument";
import curry1 from "./curry1";
/**
* A simplified curry for binary functions.
*
* @param {function} fn
* @return {function}
*/
const curry2 = (fn) =>
function fn2(a, b) {
switch (arguments.length) {
case 0:
return fn2;
case 1:
return a === __ ? fn2 : curry1((b1) => fn(a, b1));
default:
if (a === __ && b === __) {
return fn2;
}
if (a === __) {
return curry1((a1) => fn(a1, b));
}
if (b === __) {
return curry1((b1) => fn(a, b1));
}
return fn(a, b);
}
};
export default curry2;