caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Maxence Guesdon <maxence.guesdon@inria.fr>
To: Florian Hars <florian@hars.de>
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
Date: Fri, 27 Sep 2002 17:07:55 +0200	[thread overview]
Message-ID: <20020927170755.142d6390.maxence.guesdon@inria.fr> (raw)
In-Reply-To: <3D947045.9030009@hars.de>


> 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


  reply	other threads:[~2002-09-27 15:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-26 15:50 Kontra, Gergely
2002-09-27  8:01 ` Maxence Guesdon
2002-09-27  8:14   ` Xavier Leroy
2002-09-27 10:29     ` Kontra, Gergely
2002-09-27 14:50 ` Florian Hars
2002-09-27 15:07   ` Maxence Guesdon [this message]
2002-09-27 17:06     ` Kontra, Gergely
2002-09-27 18:22       ` Tim Freeman
2002-09-27 22:27     ` malc
2002-09-28  9:30   ` [Caml-list] stdlib req - iter and fold on channels Stefano Zacchiroli
     [not found] <Pine.LNX.4.44.0209300427310.1961-100000@home.oyster.ru>
2002-09-30  1:19 ` [Caml-list] (Sorry for my last post) lazyness, exceptions?, ocaml syntax rule-of-thumbs Alessandro Baretta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020927170755.142d6390.maxence.guesdon@inria.fr \
    --to=maxence.guesdon@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=florian@hars.de \
    --cc=kgergely@mlabdial.hit.bme.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).