I'm trying to make a function in OCaml which does the summation function in math. I tried this:
sum n m f =
if n = 0 then 0
else if n > m then f
else f + sum (n + 1) m f;;
However, I get an error - "Characters 41-44: else f * sum(n + 1) m f;; Error: Unbound value sum and sum is underlined (has carrot signs pointing to it)
I looked at this: Simple OCaml exercise It's the same question, but I see a lot of other things that I do not have. For example, for my n = m case, I do not have f n and then in the else case, I do not have f m.
Why do you need f n if you want the function to return an integer? D: What's the problem!? Thanks in advance.
You forgot rec
.
let rec sum n m f = ...
For recursive functions, you must manually include the "rec" keyword.
You must use the keyword let
to introduce a new function, and let rec
when this function is recursive.
Why is the first argument named f
? If it is a function you should apply it to something.
if n = 0 then 0
what a strange convention! Are you sure you want this? Idem for if n > m then f
For now, your code is equivalent to
let sum a b c =
if a = 0 then 0
else if a > b then c
else if a < 0 then min (-a*c) ((b-a+1)*c)
else (b-a+1)*c
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With