Book Image

Mastering F#

By : Alfonso García-Caro Núñez, Suhaib Fahad
Book Image

Mastering F#

By: Alfonso García-Caro Núñez, Suhaib Fahad

Overview of this book

F# is a multi-paradigm programming language that encompasses object-oriented, imperative, and functional programming language properties. Now adopted in a wide range of application areas and is supported both by industry-leading companies who provide professional tools and by an active open community, F# is rapidly gaining popularity as it emerges in digital music advertising, creating music-focused ads for Spotify, Pandora, Shazam, and anywhere on the web. This book will guide you through the basics and will then help you master F#. The book starts by explaining how to use F# with Visual Studio, file ordering, and the differences between F# and C# in terms of usage. It moves on to explain the functional core of F# such as data types, type declarations, immutability, strong type interference, pattern matching, records, F# data structures, sequence expressions, and lazy evaluation. Next, the book takes you through imperative and asynchronous programming, F# type providers, applications, and testing in F#. Finally, we look into using F# with distributed programming and using F# as a suitable language for data science. In short, this book will help you learn F# for real-world applications and increase your productivity with functional programming.
Table of Contents (16 chapters)

Using LINQ in F#


F# has query expressions that help to easily build Language Integrated Query (LINQ)  queries. Query expressions can be declared as query { ... }. It is a type of computation expression, just like the sequence expression. An example code is given as follows:

let data = [| 1..10 |] 
 
let simpleExpression() = 
    query { 
        for d in data do 
        select d 
        contains 5 
    } 
> simpleExpression();; 
val it : bool = true 

Query expressions have a list of query operators with which we can use the LINQ-like operations on the data:

    let designations = [| "CEO"; "CTO"; "Manager"; "Employee" |] 
 
    type Employee = 
        { 
            FirstName: string 
            LastName: string 
            Designation: string 
            Salary: int 
        } with 
            static member DummyData() = 
               let r = new System.Random() 
               seq { 
                    for i = 0 to 10 do 
                        let e = { 
               ...