F# is a .NET (CLI) language. It combines functional and OO (Object Oriented) concepts to you let you solve complex problems with simple code. F# is surprisingly easy to learn. This course covers all the fundamentals, and is suitable for anyone with basic software development experience.
Kit has been a software developer since the 1980s, working in industries from automotive engineering to energy trading. He's known for his huge enthusiasm for F#, which he will share with anyone who will listen.
Introduction Hello, welcome to Pluralsight. My name's Kit Easton and you're watching the F# Jumpstart course, module one. Introduction and getting started. We're going to spend the next 90 minutes getting to know the F# language, what it is, why it is what it is, and above all, how you can use it to vastly boost your productivity as a developer. If you have any. NET experience in C# or VB. NET, you're going to find this course a breeze. If you come from a platform other than. NET or mono, welcome aboard. With at least some exposure to coding, you should be able to follow along just fine. By the way, F# has a reputation for having a long learning curve, I think that's completely wrong. Once you have hold of a few simple concepts, and to be fair you know a small number of pitfalls, and how to recognize and recover from them, F# is super easy. In any other walk of life, something as easy as F# would probably be illegal.
Values, Functions and Flow of Control Hello, welcome to Pluralsight, my name's Kit Eason, and you're watching the F# Jump Start course, module two, Values, Functions, and Flow of Control. In this module, we'll learn how to define functions, provide arguments to those functions and return results. We'll also cover F#'s extraordinary ability to infer the types of values purely from the code you type, while still remaining type-safe. We'll look at those old programming staples, if statements and for loops. We'll show how to nest function declarations. We'll learn how to assign and return little groups of values called tuples or "tupples". And finally, what to do if we don't want a function to return anything at all. We'll start with the let keyword. As you probably noticed in the previous module, let is used to declare things. In F# we say it binds an identifier with a value or function. We can play with FSI to explore the kinds of things that you can bind. We can bind a simple constant. That might be a string. Or we could even bind a little function. Having bound that function, we can run it. It might be a mathematical function. Once again, we can run it. Although we haven't typed much code, there's a whole bunch of things we can learn from what we typed. To do this, I'll show you the same code in the main Visual Studio editor.
Arrays, Collections and Higher Order Functions Hello, welcome to Pluralsight. My name is Kit Eason, and you're watching the F# Jumpstart course Module3: Arrays, Collections, and Higher Order Functions. In this module, we'll look at how F# handles arrays and some of the other kinds of collections you can have and at the so-called higher order functions, which lets you process these collections simply, elegantly, and effectively. A good grasp of these topics gives you access to the huge productivity benefits, which F# offers.
Records, Option Types, Discriminated Unions and Pattern Matching Hello, welcome to Pluralsight. My name's Kit Eason, and you're watching the F# Jumpstart course, module four, Records, Option Types, Discriminated Unions, and Pattern Matching. In this module we'll look at some of the types and code constructs which make F# unique within the. NET/Mono ecosystem. Records let you build super lightweight containers for small groups of values. Option types let you largely eliminate the dreaded NullReferenceException from your code. And discriminated unions and pattern matching let you represent and process structured data in novel and highly reliable ways. Here's where you'll really start to see the benefits of working in a functional style.
Immutability and Shadowing Hello, welcome to Pluralsight. My name's Kit Eason, and you're watching the F# Jumpstart Course Module 5: Immutability and Shadowing Immutability, which I'll define in a minute, is one of those things which seems very strange when you first encounter it, and completely natural after some practice. It let's you write much more straightforward and reliable code. Shadowing is a related concept, which you need to be aware of mainly so you can avoid using it. And because nothing's perfect, I'll let you know how to bypass immutability on those occasions when it's truly necessary. Let's start by establishing what we mean by immutability in F#, or any other language. Immutability is the property of a value that means, once you set the value, you can't change it. You can very easily demonstrate immutability in F#.
Object Oriented Types Hello, welcome to Pluralsight, my name's Kit Eason, and you're watching the F# Jump Start Course module six, Object Oriented Types. In this module, we focus on defining and using object oriented concepts like OO types, classes, constructors, methods, and interfaces. If you come from a strongly OO-focused background like C# or Java, you may have found yourself feeling quite nervous in the previous modules, as we swam rapidly away from these familiar concepts. Well, in this module I'm going to throw you a life belt, and show you how F# implements object oriented concepts. We'll also look briefly at interoperation with C# code, so that you can see how easy it is to call F# from C# and use the results it returns.
Conclusion and Wrap-up Hello, welcome to Pluralsight. My name's Kit Eason, and you're watching the F# Jumpstart Course Module 7: Conclusion and Wrap-Up. I hope you've enjoyed our whistle stop tour through some of F#'s huge range of compelling features. F# is a Common Language Infrastructure language, which means F# programs can be developed and run on either. Net or Mono. Available development environments include Visual Studio and Xamarin Studio, and, as well as providing an IDE and compiler, these environments let you use F# Interactive to run fragments of code in an exploratory way. Let's revisit some of the syntax we've learned. Each of the following slides contains a code snippet, so you may want to pause the playback for each slide to remind yourself of the syntax and structures involved. We use let to define values and functions, often called binding a name to a value. Functions return the last expression they evaluate, and syntactic scope is defined by indents. You can often get away with not specifying the types of your values and functions because of the magic of type inference. If you want to force types, specify the type after a colon following the value involved. If statements, I suppose I should really say if expressions, generally return values, so unless you're working through side-effects, you normally have to have an else branch with every if. For loops let you iterate across ranges of values, and you use the same syntax, not for. . . each, when iterating over collections.