It is known that all functional languages share some basic properties like using functions as basic building block for programs with all the consequences like using recursion in
Functional Programming is a style, not a language construct
Most functional languages have some common principles:
But the most important principle is that they usually force you to write in a functional style. You can program in a functional style in most any language. C# could be considered "functional" if you write code like that, as could any other language.