| Anonymous | Login | Signup for a new account | 2013-05-20 01:31 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | |||
| 0001284 | OCaml | OCaml general | public | 2002-07-31 07:22 | 2012-06-09 13:07 | |||
| Reporter | administrator | |||||||
| Assigned To | ||||||||
| Priority | normal | Severity | feature | Reproducibility | always | |||
| Status | closed | Resolution | fixed | |||||
| Platform | OS | OS Version | ||||||
| Product Version | ||||||||
| Target Version | Fixed in Version | 3.11.0 | ||||||
| Summary | 0001284: Fix offered for "illegal stream concatenation" in Stream | |||||||
| Description | 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 | |||||||
| Tags | No tags attached. | |||||||
| Attached Files | ||||||||
Relationships |
|||||||||||
|
|||||||||||
Notes |
|
|
(0006797) doligez (manager) 2012-01-25 15:50 |
This restriction was removed in 3.11.0 and the example now works (tested in 3.12.1). I am updating the documentation (stream.mli) by removing the paragraph in question. Problem fixed in 3.11.0 (commit 8893), documentation fixed in trunk (3.13.0) (commit 12077). |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2005-11-18 10:13 | administrator | New Issue | |
| 2012-01-25 15:50 | doligez | Note Added: 0006797 | |
| 2012-01-25 15:50 | doligez | Status | acknowledged => closed |
| 2012-01-25 15:50 | doligez | Resolution | open => fixed |
| 2012-01-25 15:50 | doligez | Fixed in Version | => 3.11.0 |
| 2012-01-25 15:50 | doligez | Description Updated | View Revisions |
| 2012-01-25 15:55 | doligez | Relationship added | parent of 0001289 |
| 2012-06-09 13:07 | gasche | Relationship added | related to 0005644 |
| Copyright © 2000 - 2011 MantisBT Group |