Do any programming languages have everything as first-class citizens? This includes not only functions, but types, classes, etc. too. Having everything first-class can be a flexible and non-kludgy alternative to generics/templates.
nevermind about the type safety. With that kind of generality you kind of have to give up on that. But the syntax would be nice I guess. I could see it being similar to pattern matching syntax of ocaml and friends, where matching a variable with a parameterized type would allow you to extract the parameters used in the type.