From: Geoffrey Alan Washburn <geoffw@cis.upenn.edu>
To: brogoff <brogoff@speakeasy.net>
Cc: caml-list@inria.fr
Subject: Re: OO design
Date: Wed, 10 May 2006 20:08:02 -0400 [thread overview]
Message-ID: <44628062.6010509@cis.upenn.edu> (raw)
In-Reply-To: <Pine.LNX.4.58.0605101131140.25259@shell2.speakeasy.net>
brogoff wrote:
>> A monadic approach (where each
>> operation would return a "new" file) or linearity appears necessary for
>> the latter.
>
> Yoann Padioleau's suggestion to use the Lisp approach (with-open-file)
> looks like the best approach for ML to me.
It has advantages, but I'm not seeing how this prevents the problems
with aliasing. Take Till's version (with_open_out), it gives the
function the channel itself. There is nothing to stop the function from
stashing the channel in a reference cell and then later attempting to
use it after it has been closed.
So giving the function the channel directly is bad, what about instead
passing it some functions to manipulate the open channel? Same problem.
Another solution almost solves the problem of never reading from or
writing to a closed channel is to have an "implicit" current channel
that starts out as stdin/stdout. Then "with-open" would change the
current implicit channel. However, this actually just transforms the
problem from "trying to read from or write to a closed channel" to
"reading from or writing to the wrong channel".
The only "solution" that I've seen that seems to actually solve the
"problem" is to write a small interpreted language for performing I/O,
but that is a bit heavy weight for general use.
next prev parent reply other threads:[~2006-05-11 0:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-05 9:35 David Baelde
2006-05-05 10:47 ` [Caml-list] " Gerd Stolpmann
2006-05-05 13:00 ` Remi Vanicat
2006-05-05 19:32 ` Andrej Bauer
2006-05-08 3:17 ` Jacques Garrigue
2006-05-08 21:29 ` David Teller
2006-05-08 21:36 ` Dan Grossman
2006-05-10 2:41 ` Geoffrey Alan Washburn
2006-05-10 16:17 ` [Caml-list] " Dan Grossman
2006-05-10 18:15 ` Geoffrey Alan Washburn
2006-05-10 18:44 ` [Caml-list] " Dan Grossman
2006-05-10 18:35 ` Shawn
2006-05-10 18:47 ` Till Varoquaux
2006-05-10 19:01 ` Shawn
2006-05-10 18:43 ` brogoff
2006-05-11 0:08 ` Geoffrey Alan Washburn [this message]
2006-05-11 5:45 ` Till Varoquaux
2006-05-11 6:21 ` Jacques Garrigue
2006-05-11 15:48 ` Geoffrey Alan Washburn
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=44628062.6010509@cis.upenn.edu \
--to=geoffw@cis.upenn.edu \
--cc=brogoff@speakeasy.net \
--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