簡體   English   中英

Monoid [String]是scala中的一個Monoid嗎?

[英]Is Monoid[String] really a Monoid in scala

我目前正在學習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

因此,說結合性需要代數性來滿足偏半定律是合法的嗎? 那么,字符串Monoid是否有效?

那么說結社性要求交換性來滿足類半體律是合法的嗎?

不可以。二進制運算不需要是可交換的就可以關聯。 ("Foo" + "Bar") == ("Bar" + "Foo")為假的事實與+String.關聯的事實無關String.

那么,字符串Monoid是否有效?

是的,您可以有一個Monoid[String]

根據定義:

阿半群是一組是一個關聯二進制運算下關閉+和具有標識元素IS使得對於所有aS ,我+ a = a + I = a

一個Monoid必須包含至少一個元素。

+Monoid[String]的二進制運算。 對於任意兩個字符串aba + b也是String ,因此二進制操作在String類型上關閉。 沒有嚴格的證據,我們也知道它是關聯的。

即對於所有字符串abc

(a + b) + c == a + (b + c)

我們也有一個標識元素"" (空字符串),因為對於任何字符串aa + "" == a"" + a == a

其二元運算也是可交換性的單面體稱為可交換單面體 而且您顯然不能使用+操作為String提供可交換的monoid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM