First of all, sorry, but I'm not a native English speaker. I will however try to do my best.
I'm actually studying some theoretical concepts as a hobby to deepen my understandings of functional programming and have some questions to check that I correctly understood what a monoid is.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
So, using the following definition, I suppose that Scala's lists form a monoid under the :::
operator, as List
is a set, :::
is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
and List
has a base element (Nil
). Am I right?
Regarding monoids, is there something to say about the ::
List
operator? I suppose not as it's not taking two lists as parameters, but an element and a List
. Am I still right?