I noticed that Alice ML's semantics of the de facto standard use "function" differs from the semantics of use in other SML implementations including at least SML/NJ, Poly/ML, and Moscow ML. Informally speaking, in Alice ML, a use'd file is first evaluated completely. Then the files use'd by that file are evaluated. In other implementations, a use'd file is evaluated immediately, before evaluating the rest of the file calling use. For example, if you have files src1.sml and src3.sml whose evaluation just prints src1 and src3, respectively, then evaluating
use "src1.sml" ; print "Here!\n" ; use "src3.sml" ; in Alice ML prints (among other things) Here! src1 src3 In other implementations, the same prints src1 Here! src3 I can imagine some justifiable technical reasons for Alice ML's choice, but, honestly, I prefer the semantics provided by other implementations. If you have a source file "callMe.sml" that contains a function fun callMe () = print "You called!\n" then evaluating use "callMe.sml" ; callMe () ; produces an error in Alice ML, but is evaluated successfully in other implementations. Any chance that Alice ML might switch to the de facto standard (and unspecified, AFAIK) semantics of use? I find the de facto standard semantics significantly more useful. -Vesa Karvonen _______________________________________________ alice-users mailing list [email protected] http://www.ps.uni-sb.de/mailman/listinfo/alice-users
