Check out a free preview of the full Hardcore Functional Architecture Patterns in JavaScript course:
The "Semigroup vs Monoid" Lesson is part of the full, Hardcore Functional Architecture Patterns in JavaScript course featured in this preview video. Here's what you'd learn in this lesson:

Brian explains the main differences between a monoid and a semigroup. A semigroup can have an empty identity.

Get Unlimited Access Now

Transcript from the "Semigroup vs Monoid" Lesson

>> Or we can do some other things, we can do max and min, and intersection and union. I wanna provide a counter example to monoids and show that we can't promote a semi group to a monoid with an identity. So one example of that would be interest section.

[00:00:15] So if I make intersection and I try to, let's just copy my little template here. And I try to say okay, well, I have the intersection of this and that one, we'll use like low dash intersection, right, of this and the other one. And now how would I provide a value that said, a starting value to get the intersection of the list, right?

[00:00:47] If I concated that, if I had an intersection of this list, and I wanted to concat that with the intersection of another list. Blah, blah, blah, blah, blah. What would happen is if I provided an empty list, nothing would ever intersect with it. I would always get an empty list back.

[00:01:09] If I provided a list of every possible anything, that might work. [LAUGH] But I don't know how to do that. So we're just gonna say that intersection does not have an empty. Therefore it is only a semigroup, it is not a monoid. And so that's interestingly a union, we could just give it an empty list and that'll be identity.

[00:01:33] So, union is a monoid, intersection is not.