effects managment

by Alexander Zonov

HTML

<div class="display"></div>

JavaScript

let sum = 0;
let display = document.querySelector('.display');

function badAdd(a, b) {
	effect(a + b);
  return a + b;
}

function add(a, b) {
  return a + b;
}

function multiply(a, b) {
  return a * b;
}

function divide(a, b) {
  return a / b;
}

function effect(add) {
  sum += add;
}

function show() {
  display.innerHTML = display.innerHTML + String(sum) + '<br/>';
}

function application(inputStream, outputStream) { 
	return function domain(nums, times) {
    show();
    for (let i = 0; i < times; i++) {

      add(...nums);
      multiply(...nums);
      //effect(add(...nums));
    }
    show();
  };
}

let actions = new Stream();
let domain = application(actions);

domain(actions)([1, 2], 2);
domain([3, 4], 3);