Wrote this to reduce boilerplate when calling a function with a nullable parameter. Language is Dart. I like how concise it is but it feels weird to override []. Would you be okay with this?
extension CallMaybe<R, T> on R Function(T t) {
R? callMaybe(T? t) => switch (t) {
null => null,
T t => this(t),
};
R? operator [](T? t) => callMaybe(t);
}
void example() {
int? n;
math.sqrt[n];
}


Don’t overload things if the semantics don’t match. You’re not accessing something in a container; you’re calling a function.