it's a bit anoying because it forces to make a distinction between functions that will return something and those that won't, there is no middle choice, if I wish to take a funciton that is not required to return something because I won't treat the return, I have no option.
in a related subject, Void is not always an absence of type,
here's an extract of my custom Signal class:
class Signal<T> {
var callbacks : List<T->Dynamic> ;
...
}
when i use it as Signal<Void>, callbacks is not a List<Void->Dynamic> but actually a List<(Void)->Dynamic>, where (Void) is in fact the type of null and not the absence of type,
this was very painfull to use so I added a voidCallbacks : List<Void->Dynamic>, but still, (Void) may be used as a type in case of a generic class
that's just food for thoughts