• Indeed, the identity element. I can’t remember if it’s required or just a nice to have - I’m leaning in agreement towards required.

    Zero for integers, the empty string, an empty array, Promise.resolve(), an empty grocery list.

    There’s a fantastic blog post out there, I can’t recall the name, that talks about modeling things with monoids - a list of package dependencies, for ex, is a monoid.

    I believe there’s a similar identity concept for endofunctors, ie some identity function that does not modify their contents, ex ((a)=>a)