diff options
author | ven <vendethiel@hotmail.fr> | 2015-02-12 10:27:56 +0100 |
---|---|---|
committer | ven <vendethiel@hotmail.fr> | 2015-02-12 10:27:56 +0100 |
commit | 126219ee8139757eec5d68f470e0f867d0e58cc2 (patch) | |
tree | fcec6836cad29ce179a5b687a28051acd31ae36c | |
parent | 6edf12c4d723bdb4d4a04192f8786ff19459161f (diff) | |
parent | ea5c3c1f3efd4da9d47a7e108e0c1b92ee6dfeb6 (diff) |
Merge pull request #961 from duanchenggang/ocaml
[ocaml/en] Change the example of mutually recursive functions
-rw-r--r-- | ocaml.html.markdown | 17 |
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 ***) |