Embracing Functional Paradigm in F# for Enhanced Productivity
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.
This workshop introduces Functional Programming in F# from ground up. No prior experience in Functional Programming or .NET is needed, familiarity with a mainstream programming language like C++/Java/C# should be enough.
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.
Outline/Structure of the Workshop
- Introduction to Functional Programming
- Benefits of Functional Programming
- Introducing F#
- Benefits of F#
- DEclarative Style
- Data Immutability
- Functionals as First class Values
- Higher-order functions & Functions composition
- Partial Application
- Structured way of storing data
- Discriminated Unions & Pattern matching
- F# Collections: List, Array & Sequences
- Pipeline operator
- Units of Measure
- Type Providers
- Object Oriented Programming in F#
- Interfacing F# with C# code
- Introduce the developer to Functional paradigm and functional way of thinking in F#
- 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.
Engineers interested in learning Functional Programming
Familiarity with a mainstream programming language like C++/Java/C# should be enough.