[Oberon] Clarifying type compatibility in Oberon-07

August Karlstrom fusionfile at gmail.com
Wed Oct 11 15:26:18 CEST 2017


On 2017-10-11 10:27, Andreas Pirklbauer wrote:
 > "Question:
 >
 > How is this code (“code A”):
 >
 >   VAR
 >     nbrOfBirthsPerMonth: ARRAY 12 OF INTEGER;
 >     nbrOfAccidentsPerMonth: ARRAY 12 OF INTEGER;
 >
 >   nbrOfBirthsPerMonth := nbrOfAccidentsPerMonth; (*these match 
structurally but makes not much sense, should be forbidden*)
 >
 > CONCEPTUALLY different from the following code (“code B”):
 >
 >   VAR
 >     nbrOfBirthsPerMonth: INTEGER;
 >     nbrOfAccidentsPerMonth: INTEGER;
 >
 >     nbrOfBirthsPerMonth := nbrOfAccidentsPerMonth; (*allowed, but 
*also* makes not much sense*)
 >
 > when in comes to name equivalence vs structural equivalence?"

As pointed out by Diego, ARRAY 12 OF INTEGER is a type constructor which 
creates a new type, whereas INTEGER is the name of an existing type. So 
in code A the variables have different types, and in code B they have 
the same type.

(Andreas, for some reason all your messages consistently end up in my 
Gmail spam folder. I don't understand the reason for this.)


-- August


More information about the Oberon mailing list