> On Apr 13, 2019, at 12:40 PM, Benito van der Zander <ben...@benibela.de> 
> wrote:
> 
> Hi,
> 
> the parameter is already optional without any modifier, since you can always 
> pass nil for it.

Sorry I must be doing a bad job explaining this and the naming of “optional” 
seems to be confusing since it conflicts with existing terms. The param/return 
is indeed optional but there’s no way to know that as the programmer.

Ok, here’s a historic real work example which is all too common:

  int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void 
*(*start_routine) (void *), void *arg);

Can you pass null for attr? Well you need to read the man page and read through 
multiple paragraphs to find out "If attr is NULL, then the thread is created 
with default attributes.” See: 
http://man7.org/linux/man-pages/man3/pthread_create.3.html

Clearing up this situation with a tiny little syntax is all I propose. Make 
that fact known in code and force pthread_create to check if attr is nil before 
dereferencing it. 

> 
> Perhaps there could be the opposite modifier, so the function cannot be 
> called with nil. Like

Interesting idea but I’d have to think about it more to know if this is a real 
problem I’ve ever experienced.

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to