Does Scala's list form a monoid under the concatenation operator?











up vote
3
down vote

favorite
1












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?










share|improve this question




























    up vote
    3
    down vote

    favorite
    1












    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?










    share|improve this question


























      up vote
      3
      down vote

      favorite
      1









      up vote
      3
      down vote

      favorite
      1






      1





      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?










      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 10 at 17:38

























      asked Nov 10 at 15:34









      Argurth

      365316




      365316
























          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.






          share|improve this answer





















            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',
            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
            });


            }
            });














             

            draft saved


            draft discarded


















            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

























            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.






            share|improve this answer

























              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.






              share|improve this answer























                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.






                share|improve this answer













                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.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 10 at 17:42









                Luis Miguel Mejía Suárez

                724416




                724416






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    Full-time equivalent

                    Bicuculline

                    さくらももこ