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)