<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">> On </span><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Sun Oct 8 07:26:20 CEST 2017 Jürg wrote:</span></font><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">></span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">> </span><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Unnamed entities (or is it structural equivalence?) can create troubles. See yourself

> TYPE DotType = PROCEDURE (col, x, y: INTEGER);
> VAR dot: DotType;

> PROCEDURE myDot(x, y, col:: INTEGER); BEGIN END myDot;

> dot := myDot; (* allowed in Oberon, structurally equivalent, but the formal parameters are totally scrambled *) </span></font></div><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">></span></font><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">This is because in Oberon-07 the parameter names are treated as dummies during procedure assignments, i.e. only the types are checked by the compiler. Their names only serve to document to the reader of the program what they might mean. </span></font></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">This exact same discussion took place within the Swift language development group some time ago. In the end, Swift also went the Oberon-07 way. There, every function has a “function type”, which is made up of the parameter types and the return type of the function, but not their names. </span><span style="font-family: monospace; white-space: pre-wrap;" class="">So DotType in the example above would have a function type (Int, Int, Int). </span><span style="font-family: monospace; white-space: pre-wrap;" class="">Including names has been considered as "too restrictive”.. But it can lean to weird situations such as the one outlined above. The burden is on the programmer.</span></div><div class=""><br class=""></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">-AP</span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div></body></html>