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)

Query builder


The query builder allows use to write LINQ-like queries within query { ... } code blocks. The F# LINQ expressions have all the functions defined in the QueryBuilder class. We can also define our own query builder and use the CustomOperation attribute to define new LINQ operations. The need to build a custom query builder is required when we have a new set of functions that is not available in the existing QueryBuilder class, or if we want to have custom functions for data collections.

In this section, we will learn how to create a custom sequence builder to reuse the Seq module as LINQ query expressions. The query expression needs to satisfy three preconditions, which are as follows:

  • For: This is the method used to support the F# query syntax. It projects each element of a sequence to another sequence and combines the resulting sequences into one.
  • Yield: This returns a sequence of length, one which contains the specified value.
  • Zero: This returns an empty sequence of the given...