caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
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.


  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;
as well as URLs for NNTP newsgroup(s).