Xref: utzoo comp.lang.modula2:3764 comp.lang.modula3:202 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!ucsd!ucbvax!bloom-beacon!eru!hagbard!sunic!news.funet.fi!jyu.fi!sakkinen From: sakkinen@jyu.fi (Markku Sakkinen) Newsgroups: comp.lang.modula2,comp.lang.modula3 Subject: Two Oberon questions Message-ID: <1991Apr12.104304.4194@jyu.fi> Date: 12 Apr 91 10:43:04 GMT Reply-To: sakkinen@jytko.jyu.fi (Markku Sakkinen) Organization: University of Jyvaskyla, Finland Lines: 33 (I suppose these are currently the two most appropriate groups for discussions about Oberon.) First question: How is the type equivalence of two objects really defined in Oberon? Modula-2 has "name equivalence", but Modula-3 has gone over to structural equivalence (in my opinion: unfortunately). Wirth's original language definition in Software - Practice and Experience (July 1988) sidesteps this question rather completely. However, it is not even allowed to use the name of a previously defined procedure type to declare the type of a procedure being defined. This is a kind of structural equivalence. On the other hand, type equivalence is not mentioned among the differences in the companion paper (same issue of S-P&E) "From Modula to Oberon". Second question: Can function procedures in Oberon return structured values? In Modula-2 they cannot, but in Modula-3 this defect has been corrected. Again, the language definition carefully avoids saying anything (which would imply "yes"), but neither is this mentioned as a difference from Modula-2 (which would imply "no"). Common addition to both questions: Has the principle perhaps even been changed over the years? Do different implementations of Oberon differ? Markku Sakkinen Department of Computer Science and Information Systems University of Jyvaskyla (a's with umlauts) PL 35 SF-40351 Jyvaskyla (umlauts again) Finland SAKKINEN@FINJYU.bitnet (alternative network address)