<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=""> > </span><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">Being able to declare types locally is not so much about information </span></font><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""> > hiding as it is making the code easier to understand.</span></font><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">There are 2 separate questions: Should a language allow to..</span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">(1) *declare* local types and constants, in addition to local variables</span></div><div class=""><span style="font-family: monospace; white-space: pre-wrap;" class="">(2) *access* locally declared types and constants within nested scopes</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="">Few people would object to allowing (1) although one might argue even about that.</span></font></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">As Chris has </span></font><span style="white-space: pre-wrap; font-family: monospace;" class="">pointed out, this feature </span><span style="white-space: pre-wrap; font-family: monospace;" class="">doesn’t seemed to be used much in practice.</span></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">In the entire PO2013 </span></font><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">system with</span></font><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""> 850 </span></font><span style="white-space: pre-wrap; font-family: monospace;" class="">procedures (of </span><span style="white-space: pre-wrap; font-family: monospace;" class="">which only 17 are local </span><span style="white-space: pre-wrap; font-family: monospace;" class="">ones),</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">there </span><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">is only ONE </span></font><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">local TYPE declaration and </span></font><font face="monospace" class=""><span style="white-space: pre-wrap;" class="">only 8 local CONST declarations.</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="">With respect to (2), Chris’ main point was that - now that local variables can no</span></font></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">longer be accessed in nested scopes anyway (since the Oberon-07 revision) - what</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">is an example of a </span><span style="white-space: pre-wrap; font-family: monospace;" class="">genuine use for an intermediate TYPE if intermediate *variables*</span></div><div class=""><span style="white-space: pre-wrap; font-family: monospace;" class="">of that type are in</span><span style="white-space: pre-wrap; font-family: monospace;" class="">accessible in nested scopes.</span></div><div class=""><br class=""></div><div class=""><font face="monospace" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></font></div><div class="">——————</div></div><div class=""><br class=""></div></body></html>