1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-13 18:24:39 +02:00

Merge pull request #961 from duanchenggang/ocaml

[ocaml/en] Change the example of mutually recursive functions
This commit is contained in:
ven
2015-02-12 10:27:56 +01:00

View File

@@ -144,11 +144,16 @@ x + y ;;
(* Alternatively you can use "let ... and ... in" construct. (* Alternatively you can use "let ... and ... in" construct.
This is especially useful for mutually recursive functions, This is especially useful for mutually recursive functions,
with ordinary "let .. in" the compiler will complain about with ordinary "let .. in" the compiler will complain about
unbound values. unbound values. *)
It's hard to come up with a meaningful but self-contained let rec
example of mutually recursive functions, but that syntax is_even = function
works for non-recursive definitions too. *) | 0 -> true
let a = 3 and b = 4 in a * b ;; | n -> is_odd (n-1)
and
is_odd = function
| 0 -> false
| n -> is_even (n-1)
;;
(* Anonymous functions use the following syntax: *) (* Anonymous functions use the following syntax: *)
let my_lambda = fun x -> x * x ;; let my_lambda = fun x -> x * x ;;
@@ -288,7 +293,7 @@ type int_list_list = int list_of_lists ;;
(* Types can also be recursive. Like in this type analogous to (* Types can also be recursive. Like in this type analogous to
built-in list of integers. *) built-in list of integers. *)
type my_int_list = EmptyList | IntList of int * my_int_list ;; type my_int_list = EmptyList | IntList of int * my_int_list ;;
let l = Cons (1, EmptyList) ;; let l = IntList (1, EmptyList) ;;
(*** Pattern matching ***) (*** Pattern matching ***)