[fpc-pascal] [fpc-devel] Nested function closures

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Thu Apr 29 01:42:20 CEST 2021


On 28/04/2021 6:26 pm, Martin Frb via fpc-pascal wrote:
> Would omitting the type info not lead to issues with overloaded functions?

Luckily others have already solved that problem. :-) Here is Java's JSR-355
and overloading is covered in Section F.

  https://jcp.org/aboutJava/communityprocess/final/jsr335/index.html

The Java compiler does a three step processed to find the best match.
Alternatively, the developer could also list the argument types to help
out.

So to extend your example, the optional type could be added by the
developer.

  foo(function(a,b: integer))
  foo(function(a,b: string))
  foo(function(a: integer, b: string))

But even the Java developers found cases that were really hard or
impossible to determine by the compiler alone, and opted to forgo
overloading and change the interface. For example:

  fooInteger(function(a,b))
  fooString(function(a,b))

Not ideal, but more as a last resort.

Regards,
  Graeme


More information about the fpc-pascal mailing list