F# For Dummys - Day 9 Branching
AllenZhu
Posted on May 20, 2024
Today we learn control flow, or branching
sometimes we need to execute a block of code only when it meets some condition
//Pseudocode
if conditionOne then doTaskOne
else if conditionTwo then doTaskTwo
else doSomethingElse
we introduce 2 ways of branching
if...then
let temperature = 15
if temperature < 0 then
printfn "Wear down coat"
elif temperature < 10 then
printfn "Wear sweater"
elif temperature < 20 then
printfn "Wear long sleeves"
elif temperature < 30 then
printfn "Wear T-shirt"
else
printfn "Wear bikini"
temperature = 15, the first branch suits is temperature < 20 , even though temperature < 30 is also true, the rest logic will not execute
match...with
// Match expression.
match test-expression with
| pattern1 [ when condition ] -> result-expression1
| pattern2 [ when condition ] -> result-expression2
| ...
equivalent example:
let temperature = 15
match temperature with
| temperature when temperature < 0 -> printfn "Wear down coat"
| temperature when temperature < 10 -> printfn "Wear sweater"
| temperature when temperature < 20 -> printfn "Wear long sleeves"
| temperature when temperature < 30 -> printfn "Wear T-shirt"
| _ -> printfn "Wear bikini"
AND Pattern: we can combine conditions with (&&
) operator, it hits when both condition match
let age = 10
match age with
| age when age > 0 && age <= 1 -> printfn "Infant"
| age when age > 1 && age <= 12 -> printfn "Child"
| age when age > 12 && age <= 16 -> printfn "Teenager"
| age when age > 16 -> printfn "Adults"
| _ -> printfn "Not born"
OR Pattern: we can combine patterns using the (||
) operator to match multiple patterns
let x = 10
match x with
| x when x > 0 || x = 0 -> printfn "Positive or Zero"
| _ -> printfn "Negative"
we can define a pattern matching function
let temperature = 15
let clothingAdvice temp =
match temp with
| t when t < 0 -> "Wear down coat"
| t when t < 10 -> "Wear sweater"
| t when t < 20 -> "Wear long sleeves"
| t when t < 30 -> "Wear T-shirt"
| _ -> "Wear bikini"
printfn "%s" (clothingAdvice temperature)
another example from windows documentation
type Shape =
| Square of side: double
| Rectangle of width: double * length: double
let getArea shape =
match shape with
| Square side -> side * side
| Rectangle (width, length) -> width * length
let square = Square 2.0
printfn $"The area of the square is {getArea square}"
let rect = Rectangle (3.0, 2.0)
printfn $"The area of the rect is {getArea rect}"
getArea function calculate the area according to different shape
for a Square, it use side * side = 2.0 * 2.0
for a Rectangle, it use width * length = 3.0 * 2.0
The area of the square is 4
The area of the rect is 6
we didn't learn type yet, it defines a Union type here, and there is more powerful usage of match, we will introduce type, Union and discover more usage of match in the coming days
Posted on May 20, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.