<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Titel content=""><meta name=Stichwörter content=""><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Courier New";
        panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New",serif;}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:"Courier",serif;}
span.E-Mail-Formatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:595.0pt 842.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body bgcolor=white lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Hi Andreas<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Of course we could do so, but I wonder why?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>If I understand you correctly you want to allow the following<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>VAR<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>a: ARRAY 30 OF CHAR;<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>b: ARRAY 30 OF CHAR;<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>a := b;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Currently, this is not allowed, because there are several ways to allow this already<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Method 1:<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>VAR a, b: ARRAY 30 OF CHAR;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Method 2:<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>TYPE String30 = ARRAY 30 OF CHAR;<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>VAR<o:p></o:p></span></p><p class=MsoNormal style='margin-left:35.4pt;text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>a: String30;<o:p></o:p></span></p><p class=MsoNormal style='margin-left:35.4pt;text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>b: String30;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>We should not change the language. At least not in this case. What could be a practical benefit of it?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>NW allows assignment of different ARRAY types only in case of open arrays. This is reasonable as the formal parameter accepts different types.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>PROEDURE Test(VAR open: ARRAY OF CHAR);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>                VAR local: ARRAY 17 OF CHAR;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>                BEGIN<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>                               local := open  (* exception allowed by report *)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>                               open := local (* not allowed. Here we could discuss whether we should allow this as well *)<o:p></o:p></span></p><p class=MsoNormal style='text-indent:35.4pt'><span lang=EN-US style='mso-fareast-language:EN-US'>END A;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Jörg<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:12.0pt;color:black'>Von: </span></b><span lang=EN-US style='font-size:12.0pt;color:black'>Oberon <oberon-bounces@lists.inf.ethz.ch> im Auftrag von Andreas Pirklbauer <andrea</span><span style='font-size:12.0pt;color:black'>s_pirklbauer@yahoo.com><br><b>Antworten an: </b>ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b>Datum: </b>Donnerstag, 5. Oktober 2017 um 16:38<br><b>An: </b>ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br><b>Betreff: </b>Re: [Oberon] Clarifying type compatibility in Oberon-07<o:p></o:p></span></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>EDIT:<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Assignment compatible<o:p></o:p></p></div><div><p class=MsoNormal>…<o:p></o:p></p></div><div><p class=MsoNormal>*8. Tv is ARRAY n OF Ta, e is ARRAY OF Tb, where Ta and Tb are the same type<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On 05 Oct 2017, at 16:31, Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com">andreas_pirklbauer@yahoo.com</a>> wrote:<o:p></o:p></p></div><div><div><pre style='background:white'><o:p> </o:p></pre><pre style='background:white'>> On Thu Oct 5 12:52:20 CEST 2017 Jörg <a href="mailto:joerg.straube@iaeth.ch">joerg.straube@iaeth.ch</a> wrote:<o:p></o:p></pre><pre style='background:white'>> Assignment rule 1 uses „same type". The things NOT covered by „same type“ are mentioned explicitly with own assignment rules.<o:p></o:p></pre><pre style='background:white'>><o:p> </o:p></pre><pre style='background:white'>> 4. Ta and Tb are pointer types whose pointer base types are the same, or<o:p></o:p></pre><pre style='background:white'>> This rule is not needed, as it is covered by Assignment rule 4, assuming T is an extension of T itself.<o:p></o:p></pre><pre style='background:white'>> 5. Ta and Tb are procedure types whose formal parameter lists match.<o:p></o:p></pre><pre style='background:white'>> This rule is not needed as it covered by Assignment rule 7.<o:p></o:p></pre><pre style='background:white'>> <o:p></o:p></pre><pre style='background:white'>> br<o:p></o:p></pre><pre style='background:white'>> Jörg<o:p></o:p></pre><pre style='background:white'>Ok. So these two proposed rules are not needed (assuming T is an extension of T itself).<o:p></o:p></pre><pre style='background:white'><br><br><o:p></o:p></pre><pre style='background:white'>While we are at it, what about the following similar rules for arrays (changes are marked with an asterisk * below). Would these be covered by the existing type rules and/or can these be derived from the language report? If these rules cannot be derived from the language report, should the language itself be extended?<o:p></o:p></pre><pre style='background:white'><br><br><o:p></o:p></pre><pre style='background:white'>Same Types<o:p></o:p></pre><pre style='background:white'>Two variables a and b with types Ta and Tb are of the same type if<o:p></o:p></pre><pre style='background:white'>...<o:p></o:p></pre><pre style='background:white'>*4. Ta and Tb are array types with same element types and lengths<o:p></o:p></pre><pre style='background:white'><o:p> </o:p></pre><pre style='background:white'>Assignment compatible<o:p></o:p></pre><pre style='background:white'><br><br><o:p></o:p></pre><pre style='background:white'>An expression e of type Te is assignment compatible with a variable v of<o:p></o:p></pre><pre style='background:white'>type Tv if one of the following conditions hold:<o:p></o:p></pre><pre style='background:white'>...<o:p></o:p></pre><pre style='background:white'>*8. Tv is ARRAY OF Ta, e is ARRAY OF Tn, where Ta and Tb are the same types<o:p></o:p></pre><pre style='background:white'><o:p> </o:p></pre><pre style='background:white'>-AP<o:p></o:p></pre></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal>-- Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems https://lists.inf.ethz.ch/mailman/listinfo/oberon <o:p></o:p></p></div></body></html>