简体   繁体   中英

Confused about javascript function returning multiple functions with many fat arrow

I have problem with my cs homework. I need to access the x value of the function, but my codes is returning me an empty function instead of with the values

I have googled all the currying and closures, but none of them are advanced enough to help me solve my problem

const pair = (x, y) => f => f(x, y);  // Do not edit this function
const head = p => //Answer here                

console.log(head(pair(1,2)))          // Do not edit this

my console keeps returning me functions instead when I try all the combinations

function(a,b){return a;}

You could change head function like this:

 const pair = (x, y) => f => f(x, y); const head = f => f(a => a) console.log(head(pair(1,2))) 

my console keeps returning me this instead

function(a,b){return a;}

Let's make this easier to read. In ES5, your code looks like this:

var pair = function(x, y) {
  return function(f) {
    return f(x, y);
  }
};

var head = function(p) {
  return function(a, b) {
    return a;
  }
};

You need to pass the function returned from head to the function returned by pair(1, 2) . So you need to swap which order you're calling the functions in:

console.log(pair(1, 2)(head()));

Not sure if I understand your question correctly or not but I guess you are trying to do this

 const pair = (x, y) => f => f(x, y); const head = (x, y) => x; console.log((pair(1,2)(head))) 

if not then this one from above is correct

 const pair = (x, y) => f => f(x, y); const head = f => f(a => a); console.log(head(pair(1,2))) 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM