В настоящее время я изучаю теорию категорий в scala, и закон ассоциативности говорит
(x + y) + z = x + (y + z)
Это нормально при работе с более чем двумя значениями
("Foo" + "Bar") + "Test" == "Foo" + ("Bar" + "Test") // true
В этом случае порядок не имеет значения. Но что, если есть только два значения. В случае с числами он все еще работает (коммутативный), но при выполнении того же самого со строками он терпит неудачу.
3+1==1+3 // True
("Foo" + "Bar") == ("Bar" + "Foo") // Not commuative
Так законно ли говорить, что ассоциативность требует коммудативности для выполнения моноидного закона? Итак, действителен ли String Monoid в любом случае?