Chapter 4. Control Flow
WHAT'S IN THIS CHAPTER?
Branching with if/else
Looping with while/do
Looping with for
Handling exceptions
Much, if not all, of the power of a programming language derives from its capability to branch based according to particular criteria and values in various ways, also known as control flow expressions. Like its sister languages on the .NET platform, F# has a wide range of powerful control flow constructs, including one whose power is such that it merits its own chapter, pattern-matching, discussed in Chapter 6.
BASIC DECISIONS: IF
The simplest control flow construct to understand and come to know, of course, is the simple branching construct based on a single Boolean decision criteria: the if
construct:
let x = 12 if x = 12 then System.Console.WriteLine("Yes, x is 12")
The then
keyword is mandatory, indicating the end of the criteria test and the start of the body of the code to execute in the case when the test passes true. For this reason, parentheses are unnecessary around the criteria test.
Also, similar to how C# refuses to allow anything other than a Boolean expression to be used in the comparison clause of its if
statement, F# refuses to automatically convert non-bool
values into bool
values, so the following refuses to compile:
let x = 12 if x then System.Console.WriteLine("Yep, x")
The issue here isn't one of trying to prevent programmers from accidentally performing an assignment (as was the case in C/C++ years ago), but that the F# language refuses to ...
Get Professional F# 2.0 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.