saginadir
1/13/2017 - 12:36 PM

student.js

const wrap = (student) => ({
  take: (item) => {
    student.items.push(item);
    return wrap(student);
  },
  giveHomework: (homeworkQuantity) => {
    student.homeworkQuantity += homeworkQuantity;
    return wrap(student);
  },
  doHomework: () => {
    const doneHomework = student.items.reduce((done, item) => {
      if(item === 'pencil') {
        student.homeworkQuantity -= 1;
        return true;
      }
      return doneHomework;
    }, false)
    if(!doneHomework) console.log('Missing pencil to do homework');
    return wrap(student);
  },
  logMyState: () => {
    console.log(student);
    return wrap(student);
  }
});

const newStudent = (name) => wrap({
  name,
  items: [],
  homeworkQuantity: 0,
})