On 07/06/2019 18:37, Ben Grasset wrote:
B) Is there a specific reason is has *not* been implemented previously? (Seems unlikely)

Pascal does not support declaring any new types inside parameter lists, apart from
a) local procvar types (in ISO/MacPas modes)
b) open arrays

In both cases, theses can in fact only be declared in parameter lists (at least in their original dialects). In case of a), the reason is that this prevents you from accidentally assigning a local procvar to a variable in an outer scope and then call it when it is no longer valid. In case of b), the reason is that they don't make sense outside the context of a parameter list.

It would be inconsistent to only allow such declaration for pointers, and not for other types (a programming language should strive to be as orthogonal as possible, with as few exceptions as possible). But then you get issues with a.o. open arrays vs dynamic arrays, and record compatibility (structurally equivalent records are not assignment-compatible in Pascal).

Additionally, when extending a language, the question should always be "does this greatly improve programmer efficiency, code safety, portability, performance, ...", rather than "is there a reason why this has not been added". The reason is that extending a language also always comes with inherent downsides: slower/more complex parser, more complex documentation, incompatibilities with other compilers, potential future conflicts with other compilers if they extend it in a conflicting way, ...


Jonas
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to