Прежде всего, извините, но я не являюсь носителем английского языка. Однако я постараюсь сделать все возможное.
На самом деле я изучаю некоторые теоретические концепции как хобби, чтобы углубить свое понимание функционального программирования, и у меня есть несколько вопросов, чтобы проверить, правильно ли я понял, что такое моноид.
Прежде всего, определение моноида, которое я нашел, состоит в том, что моноид - это множество, которое замкнуто относительно ассоциативной бинарной операции и имеет единичный элемент. Я думаю, это правильно?
Итак, используя следующее определение, я предполагаю, что списки Scala образуют моноид под оператором :::
, поскольку List
является множеством, :::
является ассоциативным (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
и List
имеет базовый элемент ( Nil
). Я прав?
Что касается моноидов, есть ли что сказать об операторе ::
List
? Я полагаю, не потому, что в качестве параметров используются не два списка, а элемент и List
. Я все еще прав?