summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorven <vendethiel@hotmail.fr>2015-02-12 10:27:56 +0100
committerven <vendethiel@hotmail.fr>2015-02-12 10:27:56 +0100
commit126219ee8139757eec5d68f470e0f867d0e58cc2 (patch)
treefcec6836cad29ce179a5b687a28051acd31ae36c
parent6edf12c4d723bdb4d4a04192f8786ff19459161f (diff)
parentea5c3c1f3efd4da9d47a7e108e0c1b92ee6dfeb6 (diff)
Merge pull request #961 from duanchenggang/ocaml
[ocaml/en] Change the example of mutually recursive functions
-rw-r--r--ocaml.html.markdown17
1 files changed, 11 insertions, 6 deletions
diff --git a/ocaml.html.markdown b/ocaml.html.markdown
index f9db7080..b0027fea 100644
--- a/ocaml.html.markdown
+++ b/ocaml.html.markdown
@@ -144,11 +144,16 @@ x + y ;;
(* Alternatively you can use "let ... and ... in" construct.
This is especially useful for mutually recursive functions,
with ordinary "let .. in" the compiler will complain about
- unbound values.
- It's hard to come up with a meaningful but self-contained
- example of mutually recursive functions, but that syntax
- works for non-recursive definitions too. *)
-let a = 3 and b = 4 in a * b ;;
+ unbound values. *)
+let rec
+ is_even = function
+ | 0 -> true
+ | n -> is_odd (n-1)
+and
+ is_odd = function
+ | 0 -> false
+ | n -> is_even (n-1)
+;;
(* Anonymous functions use the following syntax: *)
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
built-in list of integers. *)
type my_int_list = EmptyList | IntList of int * my_int_list ;;
-let l = Cons (1, EmptyList) ;;
+let l = IntList (1, EmptyList) ;;
(*** Pattern matching ***)