Embracing Functional Paradigm in F# for Enhanced Productivity

Nikhil Barthwal

Short workshop - in English

F# is a relatively new primarily Functional programming language for the .Net platform. It is a statically typed managed functional language that is fully inter-operable with other .NET languages like C#, Visual Basic.NET etc. It builds on the power of Functional Paradigm and combines it with .NET Object-Oriented model enabling the developer to use the best approach for a given problem.

Functional programming (FP) offers several benefits. The code tends to be terse which leads to enhanced developer productivity. FP encourages pure functions which are much easier to reason about and debug, as well as eliminates large class of bugs due to side effect free programming. Moreover, immutability leads to easy parallelization of the code. Algebraic Data Types can be used to express domain object conveniently and control state space explosion.

F# is great practical choice for developing reliable and highly scalable real-world system that are quick and easy to develop due to the design of the language itself combined with the ability of the language to use a large no. of 3rd party libraries designed for the .NET platform.

Unfortunately, support for multiple paradigms often leads to confusion. Newcomers tend to find the transition from object-oriented world to functional world difficult. Moreover, it often leads to abuse where developer tries to use the same old imperative style of coding in a functional language and is unable to take advantage of the features, the language has to offer.

The objectives of this talk are:

  • Introduce the developer to Functional paradigm and functional way of thinking
  • Develop the ability to decide which paradigm to use for what problems
  • Leverage the existing code in C# and other .Net languages as well as large no. of 3rd party libraries written for the .NET platform.

Primarily for: Developers

Participant requirements: Laptop (Could be Mac/Windows/Linux) with F# compiler installed.