<p>Functional programming languages are not exclusive to the Java/JVM world. The Microsoft technology stack supports all the appropriate paradigms and capabilities to enable functional programming through the .NET framework. Developers can use C# or F# on the Common Language Runtime (CLR) to satisfy all of their functional needs.<br><br>The capabilities and benefits of functional programming on the Java Virtual Machine (JVM) through supported programming languages (like Scala) are well known. The real world is much more diverse, with many organizations choosing to fully invest in the Microsoft technology stack. The Microsoft ecosystem provides a very complete and capable JVM equivalent known as the Common Language Runtime (CLR). The CLR provides virtual machine-like functionality including garbage collected memory, an intermediate language (Microsoft IL), core system libraries, and support for a high-level of interoperability with native code. Amongst other things, the CLR supports languages and constructs with object-oriented and functional programming capabilities.<br><br>Microsoft created the .NET framework of technologies to support building and running applications on the CLR. One such language in the .NET framework on the CLR is C#, which is to the CLR what Java is to the JVM. Microsoft designed the C# language with some useful functional capabilities from early on. C# allows the developer to use a function object as any other object type, define function types, assign values to function objects (references), and create complex functions through strongly typed delegates.<br><br>Language Integrated Query (LINQ) is a powerful extension of the .NET framework that can be used to conveniently extract and process data from standard data structures in a functional manner that resembles SQL code written against a database. Other uses include the construction of event handlers or monadic parsers. LINQ also defines a set of standard query/sequence operators to translate fluent-style query expressions into lambda expressions and anonymous types.<br><br>The functional options on the .NET framework don’t end with C# and LINQ. The CLR supports F#, a strongly typed functional language (with object-oriented capabilities) influenced by a host of other functional languages, like OCaml, Haskell, Scala and Erlang. F# is an expression-based language using eager evaluation, type inference, function currying, partial function application, algebraic data types, lambda expressions, continuation passing, and true tail call optimization. Microsoft is actively supporting and evolving F# to keep it relevant in today’s object-oriented and functional programming world. Not surprisingly, F# is popular in complex algorithmic programming, financial and scientific applications.<br><br>The CLR is a powerful, open platform. Clojure has been ported from the JVM to run on the CLR. There is an implementation of Python on the CLR called IronPython. Similarly IronRuby is an implementation of the Ruby language on the CLR. There is IronScheme and a host of other ported languages. Developers can seamlessly incorporate code and libraries from the various CLR languages into their application. The CLR, C#, LINQ, and F# clearly demonstrate that the Microsoft ecosystem is fully enabled and capable of supporting first-class functional development on par with the Java / JVM world.<br><br><em>The author, Dharmendra Kapadia, is senior director-solutioning at Ness Software Engineering Services (SES)</em></p>