F# continues the grand tradition of ML style functional programming languages, adding the power of the .NET runtime (CLR) and base class library. F# is an excellent general purpose language that extends the capabilities of C# with type providers, immutable data, structural equality, type inference, and a powerful type system. This course covers everything you need to get started with F# and functional programming.
Introducing F# Hi. Welcome to F# Fundamentals. I'm your host, Liam McLennan. This course will cover enough F# to demonstrate its power, and give you the ability to create realistic F# solutions. We will attempt to avoid the more advanced aspects of F#, so that this course doesn't go forever. Along the way, we will learn some functional programming, which is the real secret sauce of F#. The simple answer to the question, why should I care about F#, is because F# is the major functional programming language for the. NET platform.
Functions In module 1, we took a brief tour of F#, but stayed at a very high level. Now let's dive a little deeper and talk about functions. Functions are the fundamental unit of F# programs, and function application, the act of applying a function to its arguments, is the fundamental operation. It turns out there are lots of things we can do with functions.
Data F# has many ways of representing data. It starts by including the types from C# and VB. NET, but then extends the possibilities with a number of additional constructs. This module will look briefly at the primitive types available in F#, then some special types that F# makes available, before moving on to the various options for defining types of your own.
Organization and Control Flow F# has a wide variety of simple mechanisms to group, organize, and control programs. These are not the shiny brooch or headline features of F#, but the solid foundations that help practitioners to produce clear, correct programs. There are projects to group code and settings and restrict dependencies, there are namespace and modules for organizing code by responsibility. There are visibility modifiers, exceptions, patterns for disposable components, pattern matching, and ways of interoperating with C#. All of these will be explored in this module.
Types In previous modules, we have investigated F#'s type system, and a variety of ways in which it allows the programmer to define their own types from simple tuples to record and discriminated unions. We have also looked at some of the useful collection types like List and Array. This module completes the picture by covering off some of the other useful built-in types.
Web Programming As a general-purpose programming language, F# is useful for many different types of programming tasks. Some would say that its strongest use cases are data-oriented programming and things such as console applications or processing messages off a queue. One very important class of applications is web applications. This module will explore the evolving possibilities for web programming with F#.