title: Does Scala's list form a monoid under the concatenation operator?
body: <p>First of all, sorry, but I'm not a native English speaker. I will however try to do my best.</p>
  
  <p>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.</p>
  
  <p>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?</p>
  
  <p>So, using the following definition, I suppose that Scala's lists form a monoid under the <code>:::</code> operator, as <code>List</code> is a set, <code>:::</code> is associative <code>(xs ::: (ys ::: zs) =  (xs ::: ys) ::: zs)</code> and <code>List</code> has a base element (<code>Nil</code>). Am I right?</p>
  
  <p>Regarding monoids, is there something to say about the <code>::</code> <code>List</code> operator? I suppose not as it's not taking two lists as parameters, but an element and a <code>List</code>. Am I still right?</p>