I'm thinking there's probably a better way to do this.
For some date-related stuff, I have a method that needs to take an
"inclusion" function as an argument and I'm wondering what the best way to
validate that the user has supplied a correctly formed "inclusion"
function. The requirements are that the provided function, either generic
or anonymous, take a single TimeType argument and return a Bool. So
ismonday(x::TimeType) = dayofweek(x) == Monday
and
x->dayofweek(x)==Monday
Are both valid functions to pass to my method, but what's the best way to
validate? I looked at `applicable`, but it's for generics only. For now I'm
just doing:
func(T(0)) in (true,false) || throw(ArgumentError("Provided function must
take a single TimeType argument and return true or false"))
where `func` is the user-provided inclusion function and `T` is the
TimeType we're dealing with. The main problem is if a 2-arg method is
supplied, I get a wrong number of args error and I'd rather not have to use
try-catch.
Any ideas? Something more clever?
-Jacob