<!doctype html>
<html>
  <body>
    <script>
        // Allows Plunker to display logs in preview panel 
        // for better in-browser experience
        var originalConsoleLog = console.log
        console.log = function () {
          originalConsoleLog.apply(console, arguments)
          var args = Array.prototype.slice.call(arguments);
          var stringifiedArgs = args.join(' ') + '\n';
          var newDiv = document.createElement("div"); 
          var newContent = document.createTextNode(stringifiedArgs); 
          newDiv.appendChild(newContent);
          document.body.appendChild(newDiv)
          
          document.querySelector('div').style['fontFamily'] = 'monospace';
          document.querySelector('div').style['fontSize'] = '1.5em';
        };
    </script>
    <script src="index.js"></script>
  </body>
</html>
const startVal = 4;

const squared = x => x * x;
const doubled = x => x * 2;
const addTen = x => x + 10;
const halfNum = x => x / 2;

// const result = halfNum(addTen(doubled(squared(startVal))));
const compose = (...fns) => initialVal => fns.reduceRight((val, fn) => fn(val), initialVal);

const result = compose(
    halfNum,
    addTen,
    doubled,
    squared
)(startVal);

console.log("output: ", result);
{
  "name": "compose-lesson",
  "version": "1.0.0",
  "description": "code for egghead lesson on writing a custom compose function.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Thomas Greco",
  "license": "ISC"
}
* 

* 
* inside this file, we see 3 different functions that perform some sort of computation to a number.
* if we wanted to run these functions together we could chain them together like so. 
* in this instance, we want to run them in order of their line number to compute a number from the startVal constant atop the page.
* 
*  when chaining functions, the innermost function will be executed first and then continues towards the outermost function which in our case is addTen.
* Now if i execute this in my terminal, we see that the function is working correctly as it’s printing out42.
* alright so let’s add another function that will just divide our number in half.
* now, if I wrap these nested functions in this halfNum function, then the prompt should print 21…. and it does.
* so this is great, but there has has to be a more elegant way of performing this, right? 


* Queue the compose function.
* the compose function takes in an array of fns as well as a starting point, from there, from there, it uses JavaScripts reduceRight method to map through the array of functions, and apply them  to the result of the previous function being returned.. 
* additionally, we must pass in initial value into reduceRight to specify our start value.
* alright awesome!
 

* Now that compose is wired up and ready 
* Since compose is a curried function, we’re passing our vals in in seperate parenthesis.
* as we just learned, the left parens group is going to hold our array of functions, while the 2nd one will hold our initialValue, which in this case is the startVal constant. 

* As it’s name suggests, reduceRight is going to apply our functions from RTL therefore we’re going to pass our functions in like so.
* first we have halfNum, then addTen, then doubles and finally squared, which is going to be the first function that will act on our startValue. 
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SURGb250VHlwZTIKL0Jhc2VGb250IC9MdWNpZGFHcmFuZGUKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChJZGVudGl0eSkgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgMTIgMCBSCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL1cgWzAgWzc0NCAyODcgNjE1IDUwNSA2MjMgNTUyIDMxMyAzNzEgNjE1IDM2NCAyODcgMzEzIDc2NCA2MjYgNDA0IDYxNSA1MDcgNjA5IDU0NyA2MjMgOTI1IDYyMyAzMTMgNjE5IDU4MCA2NDggNjA3IDYyNiA3MzEgNTE4IDMxMyA2MjYgNjI2IDMwMSA1MTMgMjg1IDYyNiA5OTIgNDE5IDc3MCAzMDkgNTMzIDYyNiAzMTMgNjgzIDUyOCA2MjMgXQpdCj4+CmVuZG9iagoxNSAwIG9iago8PCAvTGVuZ3RoIDY4NiA+PgpzdHJlYW0KL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCjEyIGRpY3QgYmVnaW4KYmVnaW5jbWFwCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZgovQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWYKL0NNYXBUeXBlIDIgZGVmCjEgYmVnaW5jb2Rlc3BhY2VyYW5nZQo8MDAwMD4gPEZGRkY+CmVuZGNvZGVzcGFjZXJhbmdlCjIgYmVnaW5iZnJhbmdlCjwwMDAwPiA8MDAwMD4gPDAwMDA+CjwwMDAxPiA8MDAyRT4gWzwwMDY5PiA8MDA2RT4gPDAwNzM+IDwwMDY0PiA8MDA2NT4gPDAwMjA+IDwwMDc0PiA8MDA2OD4gPDAwNjY+IDwwMDZDPiA8MDAyQz4gPDAwNzc+IDwwMDMzPiA8MDA3Mj4gPDAwNzU+IDwwMDYzPiA8MDA2Rj4gPDAwNjE+IDwwMDcwPiA8MDA2RD4gPDAwNjI+IDwwMDJFPiA8MDA2Nz4gPDAwNkI+IDwwMDU2PiA8MDA3OD4gPDAwNTQ+IDwwMDRFPiA8MDA3OT4gPDAyQkM+IDwwMDM0PiA8MDAzMj4gPDAwNkE+IDwwMDc2PiA8MDA0OT4gPDAwMzE+IDwyMDI2PiA8MDAzRj4gPDAwNTE+IDwwMDRBPiA8MDA1Mz4gPDAwNTI+IDwwMDIxPiA8MDA0MT4gPDAwNEM+IDwwMDcxPiBdCmVuZGJmcmFuZ2UKZW5kY21hcApDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AKZW5kCmVuZAplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvTHVjaWRhR3JhbmRlCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxNCAwIFJdCi9Ub1VuaWNvZGUgMTUgMCBSPj4KZW5kb2JqCjMgMCBvYmoKPDwKL1R5cGUgL1BhZ2VzCi9LaWRzIApbCjYgMCBSCl0KL0NvdW50IDEKL1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDXQo+PgplbmRvYmoKeHJlZgowIDE3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMTIwIDAwMDAwIG4gCjAwMDAwMTAyNDAgMDAwMDAgbiAKMDAwMDAwMDE2OSAwMDAwMCBuIAowMDAwMDAwMjY0IDAwMDAwIG4gCjAwMDAwMDAzMDEgMDAwMDAgbiAKMDAwMDAxMDEwMiAwMDAwMCBuIAowMDAwMDAwNjA3IDAwMDAwIG4gCjAwMDAwMDM5MzEgMDAwMDAgbiAKMDAwMDAwMDQyMSAwMDAwMCBuIAowMDAwMDAwNTg3IDAwMDAwIG4gCjAwMDAwMDM5NTEgMDAwMDAgbiAKMDAwMDAwNDIxMyAwMDAwMCBuIAowMDAwMDA4OTY1IDAwMDAwIG4gCjAwMDAwMDkzNjUgMDAwMDAgbiAKMDAwMDAwODk0NCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDE3Ci9JbmZvIDEgMCBSCi9Sb290IDIgMCBSCj4+CnN0YXJ0eHJlZgoxMDMzOAolJUVPRgo=