JSFiddle - React, Tailwind, and code Playground

JavaScript

let sum1, sum2, sum3, sum4

sum1 = (a => b => (a += b))(0)

{
	let a = 0
	sum2 = b => (a += b)
}

sum3 = Object.assign(b => (sum3.a += b), {a: 0})

sum4 = new Proxy((a, b) => a + b, {
    counter: 0,
    apply(target, th, args){
        return this.counter = target.call(null, this.counter, args[0])
    }
})

console.log(sum1(1))
console.log(sum1(3))
console.log(sum1(2))

console.log(sum2(1))
console.log(sum2(3))
console.log(sum2(2))

console.log(sum3(1))
console.log(sum3(3))
console.log(sum3(2))

console.log(sum4(1))
console.log(sum4(3))
console.log(sum4(2))