Browse thread
recursion/iterator question
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Jon Harrop <jon@f...> |
| Subject: | Re: [Caml-list] recursion/iterator question |
On Monday 17 April 2006 10:36, Christian Stork wrote: > Or, if you choose to represent triplets as lists of three elements, you can > generalize Jon's solution to > > let rec combs = function > > | (0, _) -> [[]] > | (n, es) when n > List.length es -> [] > | (n, e::es) -> List.map (fun l -> e::l) (combs (n-1, es)) @ combs > | (n, es) > > let triplets es = combs (3, es) > > Question to the rest of the list: The ocaml compiler complains with > ... > Warning P: this pattern-matching is not exhaustive. > Here is an example of a value that is not matched: > (1, []) > (However, some guarded clause may match this value.) > ... > > Am I right to assume there's no way to get rid of this warning short of > disabling P-warnings on the command line? (I can't list all the lacking > patterns since they depend on n, right?) The lacking patterns are covered by (_, []), so you probably want: | 0, _ | _, [] -> [[]] -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. Objective CAML for Scientists http://www.ffconsultancy.com/products/ocaml_for_scientists