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.