Compilation of program below produces a syntax error. Why ?
let rec (fact:int->int) =fun (n:int) ->
(if n=0 then 1
else n*fact (n-1)):int
in
print_int (fact 4);;
Compilation of program below produces a syntax error. Why ?
let rec (fact:int->int) =fun (n:int) ->
(if n=0 then 1
else n*fact (n-1)):int
in
print_int (fact 4);;
Hello @devosalain,
is not a valid expression: see the syntax for expressions in OCaml here and there.
Thus, here, one should write instead:
(if n = 0 then 1 else n * fact (n - 1) : int)
to add a type annotation on the expression if n = 0 then 1 else n * fact (n - 1)
.
By the way, note that the function fact
you define is overly type-annotated. The annotations on the parameter n
of the function fact
and on the body of fact
are redundant with the one on fact
itself.