From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id FAA11075; Fri, 18 Apr 2003 05:25:23 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id FAA11011 for ; Fri, 18 Apr 2003 05:25:21 +0200 (MET DST) Received: from gis.net (mx05.gis.net [208.218.130.13]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h3I3PKX20354 for ; Fri, 18 Apr 2003 05:25:21 +0200 (MET DST) Received: from gis.net ([208.218.130.24]) by mx05.gis.net; Thu, 17 Apr 2003 23:25:19 -0400 From: "Ryan Bastic" Reply-to: rbastic@gis.net To: caml-list@inria.fr Subject: [Caml-list] Clarification on some ocaml stuff X-Mailer: Galaxy AstroMail used by rbastic X-Originating-IP: 209.244.142.149 Date: Thu, 17 Apr 2003 23:25:19 -0400 Message-id: <3e9f701f.1227.4928@gis.net> X-Rcpt-To: X-Spam: no; 0.00; gis:99 confuses:01 experimented:01 figuring:01 arrays:01 semantics:01 ocaml:01 rec:01 toplevel:01 elegant:04 let:04 group:04 vector:04 array:04 stuff:05 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hello all, A few weeks ago I posted a message asking how to create a program in OCaml to shuffle vector of strings into an array of arrays. Had some problems understanding how to do it in Ocaml properly, and a kind soul posted a very elegant solution to the problem :-) unfortunately, i still can't understand some things from it. What follows is some code with comments on how it is expected to be used, and also where my confusion in the semantics of the code lay. (* Return first 'n' from input and the rest. *) let firstN n input = let nInput = Array.length input in if n >= nInput then (input, [||]) else (Array.sub input 0 n, Array.sub input n (nInput - n)) let group n input = let rec group' n input = if Array.length input = 0 then [] else let (front, rest) = firstN n input in (* the next line confuses me. i'm aware of :: being a list concatenation operator, but in this case, shouldn't group 'n rest be returning an array, because that's what firstN returns. I've experimented in the REPL and had no luck in figuring it out. *) front :: group' n rest in Array.of_list (group' n input) if you pop this into the toplevel, and do: group 2 [|"Name1"; "Name2"; "Name3"; "Name4"; "Name5";|];; you'll see the general functionality expected. thanks for any help, -Ryan http://malander.undrgnd.net ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners