document.getElementById("app").innerHTML = ` <h1>Hello Parcel!</h1> <div> <button id="plus">+</button> <button id="mius">-</button> </div> `; const addListener = (selector, eventType) => (listener) => { const element = document.querySelector(selector); element.addEventListener(eventType, listener); }; const plusClick = addListener("#plus", "click"); const miusClick = addListener("#mius", "click"); const hardCode = (newValue) => (broadcaster) => (listener) => { return broadcaster((value) => { listener(newValue); }); }; const plusOne = hardCode(1)(plusClick) const miusOne = hardCode(-1)(miusClick) const add = (initial) => broadcaster => listener => { return broadcaster((value) => { listener(initial += value) }) } const merge = (b1, b2) => listener => { b1(listener) b2(listener) } const counter = add(0)(merge(plusOne, miusOne)) counter(console.log)