home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / lang / modula3 / 912 < prev    next >
Encoding:
Internet Message Format  |  1992-09-15  |  2.4 KB

  1. Path: sparky!uunet!dtix!darwin.sura.net!Sirius.dfn.de!Urmel.Informatik.RWTH-Aachen.DE!vivaldi!pk
  2. From: pk@rwthi3.informatik.rwth-aachen.de (Peter Klein)
  3. Newsgroups: comp.lang.modula3
  4. Subject: Re: Constructors in Modula-3
  5. Message-ID: <1992Sep15.122237.271@Urmel.Informatik.RWTH-Aachen.DE>
  6. Date: 15 Sep 92 12:22:37 GMT
  7. References: <MHCOFFIN.92Sep14133341@tolstoy.uwaterloo.ca>
  8. Sender: news@Urmel.Informatik.RWTH-Aachen.DE (Newsfiles Owner)
  9. Reply-To: pk@rwthi3.informatik.rwth-aachen.de
  10. Organization: Lehrstuhl fuer Informatik III, RWTH Aachen, Germany
  11. Lines: 43
  12. Nntp-Posting-Host: vivaldi
  13.  
  14. In article 92Sep14133341@tolstoy.uwaterloo.ca, mhcoffin@tolstoy.uwaterloo.ca (Michael Coffin) writes:
  15. >
  16. >I proposed what I think is a simple solution to this problem a couple
  17. >months ago, but got no response.  My solution was to add a pragma, say
  18. ><*NO NEW*>, that can be affixed to type declarations in an interface.
  19. >E.g.,
  20. >
  21. >        INTEFACE foo
  22. >           <*NO NEW*> TYPE T <: U;
  23. >           PROCEDURE New(x: INTEGER): T;
  24. >        END foo.
  25. >
  26. >In the presence of this type declaration, NEW cannot be used to create
  27. >objects of type T.  This forces the user of the interface to use
  28. >whatever constructor procedures are supplied in the interface; in this
  29. >case "New".  (Of course, NEW could still be used inside a module that
  30. >implements foo.)
  31. >
  32. No, *please* no more pragmas. If you want to have a feature in the
  33. language standard, then introduce a new keyword. Everything else leads
  34. to portability problems. I see a certain use for pragmas if they don't
  35. change the semantics of a program, like <* OBSOLETE *> or <* INLINE *>.
  36. (What about INLINE anyway? Will it ever be supported?) But what you suggest
  37. definetely changes the semantics, and should therefore be a keyword (just 
  38. like <* EXTERNAL *>, which is actually no pragma either).
  39.  
  40. >What I would really like to see is a keywork, say PRIVATE, that does
  41. >what <*NO NEW*> does.  I think it is a mistake in the language design
  42. >that Modula-3 tries to guess whether NEW should be allowed based on
  43. >how much is known about a type.  Whether NEW is allowed is really
  44. >orthogonal to whether a type is completely opaque, partly revealed, or
  45. >fully revealed.
  46. >
  47. Yes. For constructors, this would be an acceptable solution.
  48.  
  49. Peter
  50. ---
  51. Peter Klein                        E-Mail: pk@rwthi3.informatik.rwth-aachen.de
  52. Lehrstuhl fuer Informatik III      Tel.: +49/241/80-21320
  53. Ahornstrasse 55                    Fax.: +49/241/80-21329
  54. RWTH Aachen
  55. D-5100 Aachen
  56. Germany
  57.