Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: tim@fungible.com (Tim Freeman)
To: caml-list@inria.fr, caml-bugs@inria.fr
Subject: [Caml-list] Fix offered for "illegal stream concatenation" in Stream
Date: Wed, 31 Jul 2002 07:22:07 -0700	[thread overview]
Message-ID: <20020731150536.C84797F66@lobus.fungible.com> (raw)

The documentation in Stream.mli says:

   Warning: these functions create streams with fast access; it is illegal
   to mix them with streams built with [[< >]]; would raise [Failure]
   when accessing such mixed streams. 

As an example of this, the following code fails:

   open Stream;;
   npeek 20 (iapp (of_string "as") (icons 'z' (of_list ['d'; 'f'])));;

(This is an artificial example.  The actual example that motivated me
has since been replaced by a workaround, so I don't have it
conveniently available.)

The resolution of bug 235 at

   http://caml.inria.fr/bin/caml-bugs/not%20a%20bug?id=235;user=guest;selectid=235

reaffirms that this behavior is considered acceptable, but it doesn't make
sense to regard throwing an exception as better than computing a useful result.
I found it frustrating that the compiler wouldn't help me predict when a stream
operation would fail with the "illegal stream concatenation" error, so I
rewrote stream.ml so all streams are valid inputs to all stream operations that
take streams as arguments.

I plugged it into the ocaml source from anonymous CVS and the compiler
was able to bootstrap fine.  It also passes a fairly thorough unit
test that's in the comments at the end, and it has reasonable
performance according to the benchmark at the end of the test cases.

Is there any interest in incorporating this changed code into OCAML?

The revised .ml file is at 

   http://www.fungible.com/stream_fixed.ml

and the .mli file (which is identical to the old version, except for a few
comments) is at

   http://www.fungible.com/stream_fixed.mli

As indicated by the header at the beginning of stream_fixed.ml, I'm happy to
assign copyright on the rewritten file to INRIA if it gets incorporated into
OCAML.

-- 
Tim Freeman       
tim@fungible.com
GPG public key fingerprint ECDF 46F8 3B80 BB9E 575D  7180 76DF FE00 34B1 5C78 
-------------------
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-07-31 15:05 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20020731150536.C84797F66@lobus.fungible.com \
    --to=tim@fungible.com \
    --cc=caml-bugs@inria.fr \
    --cc=caml-list@inria.fr \
    /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