On Fri, 19 Jun 2009, David Matthews wrote:
We're not yet at the point of releasing this although much of the code
is in SVN so it is possible to try it out. A major issue we're
struggling with is exactly what constitutes a "project". For other
languages and IDEs there's a clear distinction between compilation and
run-time. With ML, though, compilation involves execution. Typically,
a project will involve calling "use" on various files but "use" is
actually being executed. Creating an ML structure also involves
execution.
Even in more mainstream IDEs, the "project management" often does not work
as smoothly as it should. For example, I often find myself "rebooting"
Netbeans/Scala just to get in sync with external changes to sources or
jars. Whatever we will do for Isabelle (which integrates theory sources
with ML programs), we intend to do better :-)
Anyway, concerning the most basic "use" functionality in Poly/ML, for us
the main question is about global effects. Since Poly/ML already allows
the client (Isabelle) to provide an implementation of the ML environment
(for toplevel types, vals, structures etc.), the remaining question is how
to handle updates on references.
In your own IDE implementations I have seen the use of saved heap images
to achieve undoable global state. I wonder if this could be somehow
internalized, e.g. heap snapshots as plain ML values?
Anyway, even then I am unsure of what exactly will be required for the
Isabelle/ML IDE. Right now, we say that "regular" ML text has to evaluate
in a pure manner, without any side effects (toplevel bindings are handled
as pure context update). In practice, ref updates are often used for
runtime configuration (setting global flags), and that is intentionally
not undoable.
Frequently ".ML" in upper case is used for ML source although case isn't
significant on Windows. ".sml" is also widely used.
Isabelle/ML always uses .ML; some years ago many people started to use
.sml and .sig (e.g. in SML/NJ and Moscow ML).
Makarius
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml