Don't understand notation of morphisms in Monoid definitionWhat is Applicative Functor definition from the category theory POV?Examples of monoids/semigroups in programmingA monad is just a monoid in the category of endofunctors, what's the problem?“What part of Hindley-Milner do you not understand?”If “List” is a monoid, what is its “set”?A little category theoryWhat is the category-theoretical basis for the requirement that the Haskell “id” function must return the same value as passed in?Is my understanding of monoid valid?Why is `pure` only required for Applicative and not already for Functor?Free group monadHow is “a monoid on applicative functors” different than “a monoid in the category of endofunctors”?
Good examples of "two is easy, three is hard" in computational sciences
Story about encounter with hostile aliens
Was Tyrion always a poor strategist?
Separate the element after every 2nd ',' and push into next row in bash
Do 'destroy' effects count as damage?
On a piano, are the effects of holding notes and the sustain pedal the same for a single chord?
What is this dime sized black bug with white on the segments near Loveland Colorodao?
How did Arya and the Hound get into King's Landing so easily?
Is there any mention of ghosts who live outside the Hogwarts castle?
How to become an Editorial board member?
Simple Arithmetic Puzzle 7. Or is it?
Keeping the dodos out of the field
Can dirty bird feeders make birds sick?
How should I mix small caps with digits or symbols?
Schwa-less Polysyllabic German Noun Stems of Germanic Origin
Is presenting a play showing Military characters in a bad light a crime in the US?
How did Jean Parisot de Valette, 49th Grand Master of the Order of Malta, die?
Connecting circles clockwise in TikZ
Why "strap-on" boosters, and how do other people say it?
List of lists elementwise greater/smaller than
Expand a hexagon
How to tease a romance without a cat and mouse chase?
How to draw with Tikz a chord parallel to AC that passes through a point?
What are the domains of the multiplication and unit morphisms of a monoid object?
Don't understand notation of morphisms in Monoid definition
What is Applicative Functor definition from the category theory POV?Examples of monoids/semigroups in programmingA monad is just a monoid in the category of endofunctors, what's the problem?“What part of Hindley-Milner do you not understand?”If “List” is a monoid, what is its “set”?A little category theoryWhat is the category-theoretical basis for the requirement that the Haskell “id” function must return the same value as passed in?Is my understanding of monoid valid?Why is `pure` only required for Applicative and not already for Functor?Free group monadHow is “a monoid on applicative functors” different than “a monoid in the category of endofunctors”?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm trying to understand what Monoid
is from a category theory perspective, but I'm a bit confused with the notation used to describe it. Here is Wikipedia:
In category theory, a monoid (or monoid object) (M, μ, η) in a monoidal category (C, ⊗, I) is an object M together with two morphisms
μ: M ⊗ M → M called multiplication,
η: I → M called unit
My confusion is about the morphism notation. Why is the binary operation ⊗
a part of the morphism notation? My understanding of a morphism is that it's a kind of function that can map from one type to another (domain to codomain), like M → M
. Why is the operation ⊗
a part of the domain in the definition? The second confusion is about I
. Why is I
a domain? There is no I
object in a Monoid
at all. It's just a neutral element of the object M
.
I understand that Monoid
is a category with one object, an identity morphism, and a binary operation defined on this object, but the notation makes me think that I don't understand something.
Is M ⊗ M
somehow related to the cartesian product, so that the domain of the morphism is defined as M x M
?
Edit: I got a really helpful answer for my question on the Mathematics Stack Exchange.
haskell category-theory monoids
|
show 3 more comments
I'm trying to understand what Monoid
is from a category theory perspective, but I'm a bit confused with the notation used to describe it. Here is Wikipedia:
In category theory, a monoid (or monoid object) (M, μ, η) in a monoidal category (C, ⊗, I) is an object M together with two morphisms
μ: M ⊗ M → M called multiplication,
η: I → M called unit
My confusion is about the morphism notation. Why is the binary operation ⊗
a part of the morphism notation? My understanding of a morphism is that it's a kind of function that can map from one type to another (domain to codomain), like M → M
. Why is the operation ⊗
a part of the domain in the definition? The second confusion is about I
. Why is I
a domain? There is no I
object in a Monoid
at all. It's just a neutral element of the object M
.
I understand that Monoid
is a category with one object, an identity morphism, and a binary operation defined on this object, but the notation makes me think that I don't understand something.
Is M ⊗ M
somehow related to the cartesian product, so that the domain of the morphism is defined as M x M
?
Edit: I got a really helpful answer for my question on the Mathematics Stack Exchange.
haskell category-theory monoids
3
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like thisI -> M
looks very strange for me. Like it's morphism from objectI
(which is not object) toM
. OrM ⊗ M
is kind of domain. But I would really appreciated for any answer.
– Bogdan Vakulenko
7 hours ago
6
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
2
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago
|
show 3 more comments
I'm trying to understand what Monoid
is from a category theory perspective, but I'm a bit confused with the notation used to describe it. Here is Wikipedia:
In category theory, a monoid (or monoid object) (M, μ, η) in a monoidal category (C, ⊗, I) is an object M together with two morphisms
μ: M ⊗ M → M called multiplication,
η: I → M called unit
My confusion is about the morphism notation. Why is the binary operation ⊗
a part of the morphism notation? My understanding of a morphism is that it's a kind of function that can map from one type to another (domain to codomain), like M → M
. Why is the operation ⊗
a part of the domain in the definition? The second confusion is about I
. Why is I
a domain? There is no I
object in a Monoid
at all. It's just a neutral element of the object M
.
I understand that Monoid
is a category with one object, an identity morphism, and a binary operation defined on this object, but the notation makes me think that I don't understand something.
Is M ⊗ M
somehow related to the cartesian product, so that the domain of the morphism is defined as M x M
?
Edit: I got a really helpful answer for my question on the Mathematics Stack Exchange.
haskell category-theory monoids
I'm trying to understand what Monoid
is from a category theory perspective, but I'm a bit confused with the notation used to describe it. Here is Wikipedia:
In category theory, a monoid (or monoid object) (M, μ, η) in a monoidal category (C, ⊗, I) is an object M together with two morphisms
μ: M ⊗ M → M called multiplication,
η: I → M called unit
My confusion is about the morphism notation. Why is the binary operation ⊗
a part of the morphism notation? My understanding of a morphism is that it's a kind of function that can map from one type to another (domain to codomain), like M → M
. Why is the operation ⊗
a part of the domain in the definition? The second confusion is about I
. Why is I
a domain? There is no I
object in a Monoid
at all. It's just a neutral element of the object M
.
I understand that Monoid
is a category with one object, an identity morphism, and a binary operation defined on this object, but the notation makes me think that I don't understand something.
Is M ⊗ M
somehow related to the cartesian product, so that the domain of the morphism is defined as M x M
?
Edit: I got a really helpful answer for my question on the Mathematics Stack Exchange.
haskell category-theory monoids
haskell category-theory monoids
edited 3 hours ago
4castle
22.4k54475
22.4k54475
asked 8 hours ago
Bogdan VakulenkoBogdan Vakulenko
1,760218
1,760218
3
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like thisI -> M
looks very strange for me. Like it's morphism from objectI
(which is not object) toM
. OrM ⊗ M
is kind of domain. But I would really appreciated for any answer.
– Bogdan Vakulenko
7 hours ago
6
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
2
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago
|
show 3 more comments
3
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like thisI -> M
looks very strange for me. Like it's morphism from objectI
(which is not object) toM
. OrM ⊗ M
is kind of domain. But I would really appreciated for any answer.
– Bogdan Vakulenko
7 hours ago
6
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
2
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago
3
3
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like this
I -> M
looks very strange for me. Like it's morphism from object I
(which is not object) to M
. Or M ⊗ M
is kind of domain. But I would really appreciated for any answer.– Bogdan Vakulenko
7 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like this
I -> M
looks very strange for me. Like it's morphism from object I
(which is not object) to M
. Or M ⊗ M
is kind of domain. But I would really appreciated for any answer.– Bogdan Vakulenko
7 hours ago
6
6
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
2
2
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago
|
show 3 more comments
1 Answer
1
active
oldest
votes
Is
M ⊗ M
some how related to cartesian product, so domain of the morphism is defined asM x M
?
Exactly. More specifically, we get those monoids that are expressed by the Monoid
class from base by picking Hask (the category with all Haskell types as objects and all Haskell functions as morphisms) as C, (,)
(the pair type constructor) as ⊗, and ()
(the unit type) as I. The signatures of μ and η, translated to Haskell, then become:
μ :: (M, M) -> M
η :: () -> M
By currying μ, and making use of how () -> M
functions are in one-to-one correspondence to M
values (all of them look like () -> m
for some m
), we get the familiar Monoid
methods:
mappend :: M -> M -> M
mempty :: M
Note that the categorical definition is far more general than just Monoid
. For instance, we might keep working in Hask while replacing (,)
and ()
with their duals, Either
and Void
, thus getting:
μ :: Either A A -> A
η :: Void -> A
Every Haskell type is a monoid in this particular manner (μ is either id id
, and η is absurd
).
Another example is taking C to be the category of Haskell Functor
s (with natural transformations between them -- which I will write as type f ~> g = forall a. f a -> g a
-- as morphisms), Compose
as ⊗, and Identity
as I:
-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M
These two are commonly written as:
-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
In other words, a Monad
is a monoid in the category of Functor
s (which is the Hask-specific version of "a monad is a monoid in the category of endofucntors"). It is worth mentioning that, as in the other example, this is not the only way to get monoids out of that category (see the final paragraph of this answer for pointers -- the rest of it, in fact, might be relevant reading, as it discusses the notion of monoidal category).
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56200485%2fdont-understand-notation-of-morphisms-in-monoid-definition%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is
M ⊗ M
some how related to cartesian product, so domain of the morphism is defined asM x M
?
Exactly. More specifically, we get those monoids that are expressed by the Monoid
class from base by picking Hask (the category with all Haskell types as objects and all Haskell functions as morphisms) as C, (,)
(the pair type constructor) as ⊗, and ()
(the unit type) as I. The signatures of μ and η, translated to Haskell, then become:
μ :: (M, M) -> M
η :: () -> M
By currying μ, and making use of how () -> M
functions are in one-to-one correspondence to M
values (all of them look like () -> m
for some m
), we get the familiar Monoid
methods:
mappend :: M -> M -> M
mempty :: M
Note that the categorical definition is far more general than just Monoid
. For instance, we might keep working in Hask while replacing (,)
and ()
with their duals, Either
and Void
, thus getting:
μ :: Either A A -> A
η :: Void -> A
Every Haskell type is a monoid in this particular manner (μ is either id id
, and η is absurd
).
Another example is taking C to be the category of Haskell Functor
s (with natural transformations between them -- which I will write as type f ~> g = forall a. f a -> g a
-- as morphisms), Compose
as ⊗, and Identity
as I:
-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M
These two are commonly written as:
-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
In other words, a Monad
is a monoid in the category of Functor
s (which is the Hask-specific version of "a monad is a monoid in the category of endofucntors"). It is worth mentioning that, as in the other example, this is not the only way to get monoids out of that category (see the final paragraph of this answer for pointers -- the rest of it, in fact, might be relevant reading, as it discusses the notion of monoidal category).
add a comment |
Is
M ⊗ M
some how related to cartesian product, so domain of the morphism is defined asM x M
?
Exactly. More specifically, we get those monoids that are expressed by the Monoid
class from base by picking Hask (the category with all Haskell types as objects and all Haskell functions as morphisms) as C, (,)
(the pair type constructor) as ⊗, and ()
(the unit type) as I. The signatures of μ and η, translated to Haskell, then become:
μ :: (M, M) -> M
η :: () -> M
By currying μ, and making use of how () -> M
functions are in one-to-one correspondence to M
values (all of them look like () -> m
for some m
), we get the familiar Monoid
methods:
mappend :: M -> M -> M
mempty :: M
Note that the categorical definition is far more general than just Monoid
. For instance, we might keep working in Hask while replacing (,)
and ()
with their duals, Either
and Void
, thus getting:
μ :: Either A A -> A
η :: Void -> A
Every Haskell type is a monoid in this particular manner (μ is either id id
, and η is absurd
).
Another example is taking C to be the category of Haskell Functor
s (with natural transformations between them -- which I will write as type f ~> g = forall a. f a -> g a
-- as morphisms), Compose
as ⊗, and Identity
as I:
-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M
These two are commonly written as:
-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
In other words, a Monad
is a monoid in the category of Functor
s (which is the Hask-specific version of "a monad is a monoid in the category of endofucntors"). It is worth mentioning that, as in the other example, this is not the only way to get monoids out of that category (see the final paragraph of this answer for pointers -- the rest of it, in fact, might be relevant reading, as it discusses the notion of monoidal category).
add a comment |
Is
M ⊗ M
some how related to cartesian product, so domain of the morphism is defined asM x M
?
Exactly. More specifically, we get those monoids that are expressed by the Monoid
class from base by picking Hask (the category with all Haskell types as objects and all Haskell functions as morphisms) as C, (,)
(the pair type constructor) as ⊗, and ()
(the unit type) as I. The signatures of μ and η, translated to Haskell, then become:
μ :: (M, M) -> M
η :: () -> M
By currying μ, and making use of how () -> M
functions are in one-to-one correspondence to M
values (all of them look like () -> m
for some m
), we get the familiar Monoid
methods:
mappend :: M -> M -> M
mempty :: M
Note that the categorical definition is far more general than just Monoid
. For instance, we might keep working in Hask while replacing (,)
and ()
with their duals, Either
and Void
, thus getting:
μ :: Either A A -> A
η :: Void -> A
Every Haskell type is a monoid in this particular manner (μ is either id id
, and η is absurd
).
Another example is taking C to be the category of Haskell Functor
s (with natural transformations between them -- which I will write as type f ~> g = forall a. f a -> g a
-- as morphisms), Compose
as ⊗, and Identity
as I:
-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M
These two are commonly written as:
-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
In other words, a Monad
is a monoid in the category of Functor
s (which is the Hask-specific version of "a monad is a monoid in the category of endofucntors"). It is worth mentioning that, as in the other example, this is not the only way to get monoids out of that category (see the final paragraph of this answer for pointers -- the rest of it, in fact, might be relevant reading, as it discusses the notion of monoidal category).
Is
M ⊗ M
some how related to cartesian product, so domain of the morphism is defined asM x M
?
Exactly. More specifically, we get those monoids that are expressed by the Monoid
class from base by picking Hask (the category with all Haskell types as objects and all Haskell functions as morphisms) as C, (,)
(the pair type constructor) as ⊗, and ()
(the unit type) as I. The signatures of μ and η, translated to Haskell, then become:
μ :: (M, M) -> M
η :: () -> M
By currying μ, and making use of how () -> M
functions are in one-to-one correspondence to M
values (all of them look like () -> m
for some m
), we get the familiar Monoid
methods:
mappend :: M -> M -> M
mempty :: M
Note that the categorical definition is far more general than just Monoid
. For instance, we might keep working in Hask while replacing (,)
and ()
with their duals, Either
and Void
, thus getting:
μ :: Either A A -> A
η :: Void -> A
Every Haskell type is a monoid in this particular manner (μ is either id id
, and η is absurd
).
Another example is taking C to be the category of Haskell Functor
s (with natural transformations between them -- which I will write as type f ~> g = forall a. f a -> g a
-- as morphisms), Compose
as ⊗, and Identity
as I:
-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M
These two are commonly written as:
-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
In other words, a Monad
is a monoid in the category of Functor
s (which is the Hask-specific version of "a monad is a monoid in the category of endofucntors"). It is worth mentioning that, as in the other example, this is not the only way to get monoids out of that category (see the final paragraph of this answer for pointers -- the rest of it, in fact, might be relevant reading, as it discusses the notion of monoidal category).
edited 6 hours ago
answered 7 hours ago
duplodeduplode
25k45296
25k45296
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f56200485%2fdont-understand-notation-of-morphisms-in-monoid-definition%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
Do you understand what monoid is from a set theory perspective? Definitions just are -- there's little answer that can be given to "why is the definition that way" other than "because we observe there are a bunch of things we want to talk about uniformly that are that way". So I can't really imagine answering that question sensibly. But I could imagine plausibly answering "How does this definition correspond with the various parts of the set theory definition?".
– Daniel Wagner
8 hours ago
Okay. Since your (now deleted) comment says you grok the set theory definition, when I get back from lunch if there's no answer yet I'll write up a description of how the parts of the two definitions correspond; and the connection to the category with one object that's induced by the definition.
– Daniel Wagner
8 hours ago
@daniel-wanger Yes, I understand what monoid is from set theory (at least the main idea). I even have some "non-stable" understanding of what it is in category theory. The main problem for me now (at least I think it's the main one)) is that I don't understand how to read notations. Is there kind of rule that say that on the left side (domain) there can be object only?. Because definition like this
I -> M
looks very strange for me. Like it's morphism from objectI
(which is not object) toM
. OrM ⊗ M
is kind of domain. But I would really appreciated for any answer.– Bogdan Vakulenko
7 hours ago
6
Warning! There are different but related notions at work! A category with one object corresponds to the traditional notion of a monoid (e.g., the ways you can get from where you are to where you are by hopping on the spot). The notion of monoidal category is something else: they can have much more interesting collections of objects in which (X) and I induce monoid-like structure (the way (,) on Haskell types is associative and absorbs () up to isomorphism).
– pigworker
7 hours ago
2
The words "monoidal category" are essential, and it's where these operators you are asking about come from. You seem to be ignoring them.
– luqui
6 hours ago