Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!mcvax!ukc!etive!lfcs!nick From: nick@lfcs.ed.ac.uk (Nick Rothwell) Newsgroups: comp.lang.misc Subject: Re: Polymorphism Message-ID: <1834@etive.ed.ac.uk> Date: 24 Apr 89 13:08:56 GMT References: <5957@pdn.paradyne.com< <1810@etive.ed.ac.uk> <5973@pdn.paradyne.com> Sender: news@etive.ed.ac.uk Reply-To: nick@lfcs.ed.ac.uk (Nick Rothwell) Organization: LFCS Enya Admiration Society Lines: 56 In article <5973@pdn.paradyne.com> alan@rnms1.paradyne.com (Alan Lovejoy) writes: > >By "inspect" I simply mean "read." If I can code "IF a = b," then I can >"inspect" or "read" "a" and "b". I stand by my words. You can't evaluate "a = b" in ML if a and b are functions, since equality doesn't make sense. If they're abstract types, then any default interpretation of "=" may be incorrect (e.g. sets represented as lists). ><"modification" is only allowed on > >By "modification" I simply mean "change." If I can code "INC(i)", so that >the value of "i" is incremented to the next "higher" member of the ordered set >of values of which "i" is a member, then I have the ability to "modify" "i". I stand by my words here as well. If I bind X to 3 (in a functional language), I don't want X to be alterable. >Also, I really want to require that modification be possible in principle, >if the programmer wants to define any operations that modify values of some >type. But the point of a high-level language is that it provides a firm semantic framework for the objects that you're dealing with and the operations that they support...? I don't think that making "any modification possible in principle" is desirable. Or feasible, for that matter. >As for "modifying a function," how about recompiling it? Or changing the >input parameter "type" and/or "range" checking? I distinguish "modification" and "re-binding". If I rebind a function "F", that declares a new "F", which I can then go on and use. Existing code doesn't see the change (unless it is also recompiled). ><"Storage in memory" - doesn't make sense for higher-order garbage collected >Would you accept Smalltalk as a higher-order garbage-collected language? >What did you think I meant? ML has objects which accept assignment, but no notion of "memory" or "address" in the classical sense. The behaviour of ML reference objects is defined semantically. >Alan Lovejoy; alan@pdn; 813-530-2211; AT&T Paradyne: 8550 Ulmerton, Largo, FL. Nick. Nick Rothwell, Laboratory for Foundations of Computer Science, Edinburgh. nick@lfcs.ed.ac.uk !mcvax!ukc!lfcs!nick ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ Fais que ton reve soit plus long que la nuit.