Re: Suggestion for Caml Light 0.7 for Mac

Doug Currie, Flavors Technology, Inc. (e@flavors.com)
Mon, 15 May 1995 11:01:21 -0400

Message-Id: <v01510125abdd16d2173e@[204.5.215.14]>
Date: Mon, 15 May 1995 11:01:21 -0400
To: Graham White <graham@alliaco.demon.co.uk>, caml-light@pauillac.inria.fr
From: e@flavors.com (Doug Currie, Flavors Technology, Inc.)
Subject: Re: Suggestion for Caml Light 0.7 for Mac

At 3:58 PM 95.05.12, Graham White wrote:
>>Regarding the announcement of the release of Caml Light 0.7 beta 4
>>
>>> The Macintosh version has not been recompiled yet.
>>
>>I don't know how easy it would be to do this but as a Mac user of
>>Caml Light I find it very inconvenient to keep switching between
>>the Caml application and my editor. Would it be possible
>>to make Caml Light scriptable by AppleScript, and to maybe log its top-level
>>output to a file for easy error location? The simplest interface to Caml Light
>>would just be a script command which accepts a string and treats it as if it
>>were top level input. Even better, the command could return the
>>top-level output as a string to the calling application.
>Probably an even better way would be to have input and output to Caml via
>apple events, so that you could run it using Alpha as a shell. You would
>then have all the facilities of Alpha, and input and output to Caml would
>appear in Alpha windows. I've just been working with Tom Kiffe on doing
>this with CMacTeX, and it's really quite easy; if anyone wants more
>details, I can send them.

The evaluation mechanism described by Claudio Russo <cvr@dcs.ed.ac.uk>
would be difficult to add. It is very hard to tell when Caml Light is
finished with a command. For the toplevel, one could detect the prompt
string to see when Caml Light was done, but this doesn't work for all
situations, e.g., user written parsers, error messages, etc.

A stream based approach might work; perhaps this is what Graham White is
describing. In a stream based approach there is no necessary correspondence
between AppleEvents sent and received. The editor and Caml Light simply
package up characters into messages and send them off. Perhaps they do this
for every character, or every line, or upon command.

One difficulty with this approach is that the correspondence between user
input and Caml output is lost. The two streams either go to two windows, or
the streams are intermixed haphazardly.

Presumably you'd like Caml Light to continue supporting Compile File and
Load File menu commands. I also find it convenient to select some text in
an edit buffer and send it to Caml Light as input, receiving output in
another window. Does Alpha do this, too?

I have integrated a multi-window editor and interaction window with Caml
Light on the Mac which addresses all these issues, except "I want to use my
editor as an interaction window." It has different styles for user and Caml
typed text in the same window, supports user and Caml typing simultaneously
without intermixing the strings, and is not subject to the far-too-frequent
32K Mac edit buffer limitation. This Caml Light front end also currently
supports the "dosc" DoScript AppleEvent which will send a text string or a
file as input to Caml Light; the output, unfortunately, is currently sent
to the interaction window.

I have given my Caml Light Mac front end to INRIA for their use as they see
fit. At some point in the future I may be able to add the stream based
AppleEvents, but not real soon. The sources are included, however, and I
would invite anyone interested to give it a try.

e