Permanently Deleted

  • sleep_deprived@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    Currying is converting a function with n parameters to n functions that each have one parameter. This is done automatically in most primarily functional languages. Then, partial application is when you supply less than n arguments to a curried function. In short, currying happens at the function definition and partial application happens at the function call.

    Currently the type of test_increment is (int, int) -> unit -> unit. What we want is int -> int -> unit -> unit. The more idiomatic way would have this function definition:

    let test_increment new_value original_value () =
    

    Which would require this change in the callers:

    test_case "blah" `Quick (test_increment 1 0);
    

    See, in most primarily functional languages you don’t put parentheses around function parameters/arguments, nor commas between them - in this case, only around and between members of tuples.