Jane Street OCaml Challenge: Labeled Arguments

The signature int -> int -> int does not tell us what each argument means:

let divide dividend divisor = dividend / divisor

Now we make this clearer using labeled arguments:

let divide ~dividend ~divisor = dividend / divisor

Calling Labeled Functions

You can call the labeled version in any order:

let x = divide ~divisor:3 ~dividend:9

If the variable name matches the label, you can use just:

let dividend = 9 in let divisor = 3 in divide ~dividend ~divisor

Your Turn

Write a modulo function using labeled arguments:

let modulo ~dividend ~divisor = failwith "For you to implement"

Tests

let%test "Testing modulo..." = Int.(=) 2 (modulo ~dividend:17 ~divisor:5) let%test "Testing modulo..." = Int.(=) 0 (modulo ~dividend:99 ~divisor:9)