Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!uunet!mcsun!ukc!edcastle!cs.ed.ac.uk!db From: db@cs.ed.ac.uk (Dave Berry) Newsgroups: comp.lang.functional Subject: Re: Help needed with behaviour of SML Message-ID: <10144@skye.cs.ed.ac.uk> Date: 6 May 91 16:06:49 GMT References: <9104262016.AA28063@enuxha.eas.asu.edu> <20644@ogicse.ogi.edu> Sender: nnews@cs.ed.ac.uk Reply-To: db@lfcs.ed.ac.uk (Dave Berry) Organization: Laboratory for the Foundations of Computer Science, Edinburgh U Lines: 33 In article kers@hplb.hpl.hp.com (Chris Dollin) writes: > >SML is an interactive incremental development language. This means that >when you find an error in a function definition, all you need to do is to >redefine the function and .... ML was developed as a language for manipulating values interactively. The original ML let you manipulate theorems. Later versions let you manipulate any values, such as windows or trees. ALthough ML also lets you test code incrementally, I've always felt that this was a secondary goal (I may be wrong, of course; I can't read the designers' minds). Code development in ML is a big improvement over a batch language, even with a raw environment. You can test any function interactively, and you can redefine leaf functions easily. Redefining non-leaf functions isn't as convenient if you're just presented with the raw language, but it's fairly easy to write decent programming environments to do everything automatically. Even a make system is a great help. A good environment would just recompile and re-link the changed module, without recompiling all intermediate modules (there is at least one firm developing such an environment). If I were designing an ML-like language, I would probably ban redeclaration altogether. I'd add a renaming scheme to the module system to take care of name clashes, and force people to use references if they wanted to change the value bound to a variable. (I'd also add automatic dereferencing to prevent this becoming cumbersome). Dave. -- Dave Berry, LFCS, Edinburgh Uni. db%lfcs.ed.ac.uk@nsfnet-relay.ac.uk "So they gave him a general anaesthetic and cleaned him with Swarfega."