Passing a reference to a function in SML












0















i would like to pass a reference to a function foo in sml and change its value. consider the following scenario:



val x = ref 5; 
foo 3 x;
(* now x will be 3 *)


is it possible in sml? i know that sml does not have variables so i am not sure its possible. i would like to do that way in order to create tests such as:



val test1 = (foo (seq 2) = 2); 
val test2 = (foo it = 2);


it won't work because it will contain the output of test1 (its boolean value). i would like to pass a reference x and change it every single time.



val x = ref 0;
val test1 = (foo (seq 2) x = 2);
val test2 = (foo (getnext(!x)) x = 3);
val test3 = (foo (getnext(!x)) x = 4);
val test4 = (foo (getnext(!x)) x = 5);


getnext will get the next value and foo will insert it into x, beside from returning the value so it can check the equality.










share|improve this question























  • Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

    – Yawar
    Jan 2 at 4:24
















0















i would like to pass a reference to a function foo in sml and change its value. consider the following scenario:



val x = ref 5; 
foo 3 x;
(* now x will be 3 *)


is it possible in sml? i know that sml does not have variables so i am not sure its possible. i would like to do that way in order to create tests such as:



val test1 = (foo (seq 2) = 2); 
val test2 = (foo it = 2);


it won't work because it will contain the output of test1 (its boolean value). i would like to pass a reference x and change it every single time.



val x = ref 0;
val test1 = (foo (seq 2) x = 2);
val test2 = (foo (getnext(!x)) x = 3);
val test3 = (foo (getnext(!x)) x = 4);
val test4 = (foo (getnext(!x)) x = 5);


getnext will get the next value and foo will insert it into x, beside from returning the value so it can check the equality.










share|improve this question























  • Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

    – Yawar
    Jan 2 at 4:24














0












0








0








i would like to pass a reference to a function foo in sml and change its value. consider the following scenario:



val x = ref 5; 
foo 3 x;
(* now x will be 3 *)


is it possible in sml? i know that sml does not have variables so i am not sure its possible. i would like to do that way in order to create tests such as:



val test1 = (foo (seq 2) = 2); 
val test2 = (foo it = 2);


it won't work because it will contain the output of test1 (its boolean value). i would like to pass a reference x and change it every single time.



val x = ref 0;
val test1 = (foo (seq 2) x = 2);
val test2 = (foo (getnext(!x)) x = 3);
val test3 = (foo (getnext(!x)) x = 4);
val test4 = (foo (getnext(!x)) x = 5);


getnext will get the next value and foo will insert it into x, beside from returning the value so it can check the equality.










share|improve this question














i would like to pass a reference to a function foo in sml and change its value. consider the following scenario:



val x = ref 5; 
foo 3 x;
(* now x will be 3 *)


is it possible in sml? i know that sml does not have variables so i am not sure its possible. i would like to do that way in order to create tests such as:



val test1 = (foo (seq 2) = 2); 
val test2 = (foo it = 2);


it won't work because it will contain the output of test1 (its boolean value). i would like to pass a reference x and change it every single time.



val x = ref 0;
val test1 = (foo (seq 2) x = 2);
val test2 = (foo (getnext(!x)) x = 3);
val test3 = (foo (getnext(!x)) x = 4);
val test4 = (foo (getnext(!x)) x = 5);


getnext will get the next value and foo will insert it into x, beside from returning the value so it can check the equality.







sml






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 2 at 0:35









TTaJTa4TTaJTa4

366111




366111













  • Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

    – Yawar
    Jan 2 at 4:24



















  • Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

    – Yawar
    Jan 2 at 4:24

















Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

– Yawar
Jan 2 at 4:24





Leaving aside the other questions, threading a mutable state through individual unit tests is always a Bad Idea(TM). Make your unit tests set up their data independently, your future self will thank you. Try an existing unit testing module to make things slightly easier, e.g. github.com/kvalle/sml-testing

– Yawar
Jan 2 at 4:24












1 Answer
1






active

oldest

votes


















1














What's wrong with



fun foo v r = (r := v; v)


?






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


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000054%2fpassing-a-reference-to-a-function-in-sml%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









    1














    What's wrong with



    fun foo v r = (r := v; v)


    ?






    share|improve this answer




























      1














      What's wrong with



      fun foo v r = (r := v; v)


      ?






      share|improve this answer


























        1












        1








        1







        What's wrong with



        fun foo v r = (r := v; v)


        ?






        share|improve this answer













        What's wrong with



        fun foo v r = (r := v; v)


        ?







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 2 at 9:37









        Andreas RossbergAndreas Rossberg

        27k24865




        27k24865
































            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000054%2fpassing-a-reference-to-a-function-in-sml%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

            MongoDB - Not Authorized To Execute Command

            How to fix TextFormField cause rebuild widget in Flutter

            Npm cannot find a required file even through it is in the searched directory