Robert Roessler wrote:
I mentioned here recently that I was working on updating my Scintilla plugin for OCaml to also support Standard ML - and it is now "done"(*).
It looks very nice. I've just been trying it out.
Perhaps I am missing something, but it looks like Poly is all about an interactive read-eval-print loop sort of dev environment, as opposed to [also] supporting a non-interactive edit-compile-run model... this makes the efforts underway to have a richer interactive experience even more understandable. ;)
Yes, this is the difficulty for an IDE. The model is that of an interactive session where the user types declarations and evaluates expressions in the scope of the previous declarations. There's no mechanism for separate compilation as such. Files can be compiled and executed using the "use" function and a file can itself contain calls to "use". This is the way large programs are built up. What this means, though, is that it isn't possible to tell just be looking at a file what it depends on. The IDE has to know where in the sequence of "uses" the file is if it wants to compile it "out-of-order".
As I have already built OCaml bindings for Scintilla, creating SML bindings should be doable... but would this really be usable, given that Scintilla is Windows or GTK+, while Poly seems to be more Windows or X (including Motif here) oriented. Hmmm. I bring this up, because I think Scintilla can be useful as the "editing and output window" part of an IDE.
Poly/ML doesn't really have any GUI associated with it. On Windows it puts up a simple GUI because command-line execution on Windows is so painful. On Unix most people use the command line version or various other wrap-arounds. The X-Windows/Motif code was for writing GUI applications in ML (there is now some similar code for Windows) but isn't used much at all now. For editing ML code Lucas has written a plug-in for jEdit which is in the SVN repository and that runs on both Unix and Windows. This supports the background compilation mechanism that we're working on for Poly/ML 5.3 where the editor can highlight program errors while it's being edited.
Regards, David