Does Scala's list form a monoid under the concatenation operator?
up vote
3
down vote
favorite
First of all, sorry, but I'm not a native English speaker. I will however try to do my best.
I'm actually studying some theoretical concepts as a hobby to deepen my understandings of functional programming and have some questions to check that I correctly understood what a monoid is.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
So, using the following definition, I suppose that Scala's lists form a monoid under the :::
operator, as List
is a set, :::
is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
and List
has a base element (Nil
). Am I right?
Regarding monoids, is there something to say about the ::
List
operator? I suppose not as it's not taking two lists as parameters, but an element and a List
. Am I still right?
scala functional-programming scala-cats monoids
add a comment |
up vote
3
down vote
favorite
First of all, sorry, but I'm not a native English speaker. I will however try to do my best.
I'm actually studying some theoretical concepts as a hobby to deepen my understandings of functional programming and have some questions to check that I correctly understood what a monoid is.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
So, using the following definition, I suppose that Scala's lists form a monoid under the :::
operator, as List
is a set, :::
is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
and List
has a base element (Nil
). Am I right?
Regarding monoids, is there something to say about the ::
List
operator? I suppose not as it's not taking two lists as parameters, but an element and a List
. Am I still right?
scala functional-programming scala-cats monoids
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
First of all, sorry, but I'm not a native English speaker. I will however try to do my best.
I'm actually studying some theoretical concepts as a hobby to deepen my understandings of functional programming and have some questions to check that I correctly understood what a monoid is.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
So, using the following definition, I suppose that Scala's lists form a monoid under the :::
operator, as List
is a set, :::
is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
and List
has a base element (Nil
). Am I right?
Regarding monoids, is there something to say about the ::
List
operator? I suppose not as it's not taking two lists as parameters, but an element and a List
. Am I still right?
scala functional-programming scala-cats monoids
First of all, sorry, but I'm not a native English speaker. I will however try to do my best.
I'm actually studying some theoretical concepts as a hobby to deepen my understandings of functional programming and have some questions to check that I correctly understood what a monoid is.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
So, using the following definition, I suppose that Scala's lists form a monoid under the :::
operator, as List
is a set, :::
is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs)
and List
has a base element (Nil
). Am I right?
Regarding monoids, is there something to say about the ::
List
operator? I suppose not as it's not taking two lists as parameters, but an element and a List
. Am I still right?
scala functional-programming scala-cats monoids
scala functional-programming scala-cats monoids
edited Nov 10 at 17:38
asked Nov 10 at 15:34
Argurth
365316
365316
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
As far as I know, that is correct. (disclaimer: I am still learning too).
So, using the following definition, I suppose that Scala's lists form a monoid under the ::: operator, as List is a set, ::: is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs) and List has a base element (Nil). Am I right?
Also correct.
For example here is the definition of Monoid[List[A]]
in Cats - and here is an specification of the Monoid[List[A]]
in Scalaz.
Both are libraries/frameworks for functional programming in scala, and as you can see they both define the Monoid for List using :::
and Nil
.
Regarding monoids, is there something to say about the :: List operator? I suppose not as it's not taking two lists as parameters, but an element and a List. Am I still right?
Again as far as I know, you're still right.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
As far as I know, that is correct. (disclaimer: I am still learning too).
So, using the following definition, I suppose that Scala's lists form a monoid under the ::: operator, as List is a set, ::: is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs) and List has a base element (Nil). Am I right?
Also correct.
For example here is the definition of Monoid[List[A]]
in Cats - and here is an specification of the Monoid[List[A]]
in Scalaz.
Both are libraries/frameworks for functional programming in scala, and as you can see they both define the Monoid for List using :::
and Nil
.
Regarding monoids, is there something to say about the :: List operator? I suppose not as it's not taking two lists as parameters, but an element and a List. Am I still right?
Again as far as I know, you're still right.
add a comment |
up vote
3
down vote
accepted
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
As far as I know, that is correct. (disclaimer: I am still learning too).
So, using the following definition, I suppose that Scala's lists form a monoid under the ::: operator, as List is a set, ::: is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs) and List has a base element (Nil). Am I right?
Also correct.
For example here is the definition of Monoid[List[A]]
in Cats - and here is an specification of the Monoid[List[A]]
in Scalaz.
Both are libraries/frameworks for functional programming in scala, and as you can see they both define the Monoid for List using :::
and Nil
.
Regarding monoids, is there something to say about the :: List operator? I suppose not as it's not taking two lists as parameters, but an element and a List. Am I still right?
Again as far as I know, you're still right.
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
As far as I know, that is correct. (disclaimer: I am still learning too).
So, using the following definition, I suppose that Scala's lists form a monoid under the ::: operator, as List is a set, ::: is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs) and List has a base element (Nil). Am I right?
Also correct.
For example here is the definition of Monoid[List[A]]
in Cats - and here is an specification of the Monoid[List[A]]
in Scalaz.
Both are libraries/frameworks for functional programming in scala, and as you can see they both define the Monoid for List using :::
and Nil
.
Regarding monoids, is there something to say about the :: List operator? I suppose not as it's not taking two lists as parameters, but an element and a List. Am I still right?
Again as far as I know, you're still right.
First of all, the definition of a monoid that I found is that a monoid is a set that is closed under an associative binary operation and has an identity element. I guess it's correct?
As far as I know, that is correct. (disclaimer: I am still learning too).
So, using the following definition, I suppose that Scala's lists form a monoid under the ::: operator, as List is a set, ::: is associative (xs ::: (ys ::: zs) = (xs ::: ys) ::: zs) and List has a base element (Nil). Am I right?
Also correct.
For example here is the definition of Monoid[List[A]]
in Cats - and here is an specification of the Monoid[List[A]]
in Scalaz.
Both are libraries/frameworks for functional programming in scala, and as you can see they both define the Monoid for List using :::
and Nil
.
Regarding monoids, is there something to say about the :: List operator? I suppose not as it's not taking two lists as parameters, but an element and a List. Am I still right?
Again as far as I know, you're still right.
answered Nov 10 at 17:42
Luis Miguel Mejía Suárez
724416
724416
add a comment |
add a comment |
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%2f53240481%2fdoes-scalas-list-form-a-monoid-under-the-concatenation-operator%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