Browse thread
to merge list of lists
[
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: | 2007-03-05 (08:59) |
From: | Jon Harrop <jon@f...> |
Subject: | Re: [Caml-list] to merge list of lists |
On Monday 05 March 2007 08:37, skaller wrote: > On Mon, 2007-03-05 at 17:10 +1100, Pietro Abate wrote: > > mergel [] [[1;2;3];[4;5;6];[7;8;9]];; > > - : int list list = [[1; 4; 7]; [2; 5; 8]; [3; 6; 9]] > > In this case there is a library function: > > List.concat > > that already does exactly what you want :) List.concat doesn't do that: # List.concat [[1;2;3];[4;5;6];[7;8;9]];; - : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9] Note that the OP is not asking for a concat or even a merge, but a transpose. A naive (non tail recursive) transpose is a 1-liner: # open List;; # let rec transpose list = try map hd list :: transpose (map tl list) with _ -> [];; val transpose : 'a list list -> 'a list list = <fun> For example: # transpose [[1;2;3];[4;5;6];[7;8;9]];; - : int list list = [[1; 4; 7]; [2; 5; 8]; [3; 6; 9]] -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. OCaml for Scientists http://www.ffconsultancy.com/products/ocaml_for_scientists