const createURL = baseURL => {
const protocol = "https";
// we now return a function, that accepts a 'path' as an argument
return path => {
return `${protocol}://${baseURL}/${path}`;
};
};
// we create a new functions with the baseURL value in it's closure scope
const createSiteURL = createURL("mysite.com");
const createCareersURL = createURL("mysite-careers.com");
// create URLs for our main site
const homeURL = createSiteURL("");
const loginURL = createSiteURL("login");
const productsURL = createSiteURL("products");
const contactURL = createSiteURL("contact-us");
// create URLs for our career site
const careersHomeURL = createCareersURL("");
const careersLoginURL = createCareersURL("login");
a technique that applies a function
to its arguments one at a time, with
each application returning a new function
that accepts the next argument.
/**
* The underlying base function is "add" which takes 3 arguments and return their sum.
*/
const add = (a, b, c) => a + b + c;
/**
* We need such a function which will transform the base function such that
* it can also process its argument one by one.
*/
const curry = (baseFunc) => {
// TODO: Do something with it.
};
const add3 = curry(add);