「Programming in Scala」(赤い本) という本を読んでいます。
モノイドに関する章で、モノイド準同型が何であるかを理解しています。たとえばM
、連結とlength
関数を使用した文字列モノイドf
はモノイド構造を保持するため、準同型です。
M.op(f(x), f(y)) == M.op(f(x) + f(y))
// "Lorem".length + "ipsum".length == ("Lorem" + "ipsum").length
本を引用します(記憶によるので、間違っていたら訂正してください:
これが両方向で発生する場合、モノイド同型写像と呼ばれます。これは、モノイド
M, N
、関数f, g
、f andThen g
およびg andThen f
が関数であることを意味しidentity
ます。たとえば、String
モノイドList[Char]
と連結を伴うモノイドは同形です。
しかし、これを見るための実際の例を見ることはできません。関数としてしか考えられませんが、どうなりf
ますか?length
g
注: 私はこの質問を見ました: What are is isomorphism and homomorphisms .