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 RAA14043; Fri, 27 Sep 2002 17:08:03 +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 RAA14002 for ; Fri, 27 Sep 2002 17:08:02 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g8RF7u525855; Fri, 27 Sep 2002 17:07:56 +0200 (MET DST) Received: from santenay.inria.fr (santenay.inria.fr [128.93.8.59]) by pauillac.inria.fr (8.7.6/8.7.3) with SMTP id RAA14006; Fri, 27 Sep 2002 17:07:55 +0200 (MET DST) Date: Fri, 27 Sep 2002 17:07:55 +0200 From: Maxence Guesdon To: Florian Hars Cc: kgergely@mlabdial.hit.bme.hu, caml-list@inria.fr Subject: Re: [Caml-list] (Sorry for my last post) lazyness, exceptions?, ocaml syntax rule-of-thumbs Message-Id: <20020927170755.142d6390.maxence.guesdon@inria.fr> In-Reply-To: <3D947045.9030009@hars.de> References: <3D947045.9030009@hars.de> Organization: INRIA X-Mailer: Sylpheed version 0.8.2claws (GTK+ 1.2.10; ) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk > Kontra, Gergely wrote: > > One point was ocaml is really obscure is the file reading: it needed to > > wrap the line-reading in an infinite loop, and this loop is ended via an > > exception. I think End_of_file is not an exception, it is just an event. What next ? int_of_string "foo" returning None ? It is an exception case: your function tries to read a line but there is nothing to read so it will not return the expected result, so an exception is raised. It is the classic and right way to do. If you want to read a whole file as a string, you can use the following function: let input_file_as_string file = let chanin = open_in_bin file in let len = 1024 in let s = String.create len in let buf = Buffer.create len in let rec iter () = try let n = input chanin s 0 len in if n = 0 then () else ( Buffer.add_substring buf s 0 n; iter () ) with End_of_file -> () in iter (); close_in chanin; Buffer.contents buf -- Maxence Guesdon ------------------- 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