I have read that with a statically typed language like Scala or Haskell there is no way to create or provide a Lisp apply function:
apply
(apply #\'+ (lis
See his dynamic thing for haskell, in C, void function pointers can be casted to other types, but you'd have to specify the type to cast it to. (I think, haven't done function pointers in a while)