this post was submitted on 21 Oct 2023
22 points (92.3% liked)

Programming

17538 readers
71 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
22
(lemmy.ml)
submitted 1 year ago* (last edited 10 months ago) by [email protected] to c/programming
 

Permanently Deleted

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 4 points 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.