I am looking for a statically typed language that not only treats functions as first class objects, but can read the number of inputs, and their type, as well as number of outputs as well as their types.
I think this might be possible with scala if I monkey patched the Function1 trait, but that seems pretty in-elegant.
So far the languages that I believe are able to do this are:
Javascript, Ruby and C#.