Showing posts with label syntax. Show all posts
Showing posts with label syntax. Show all posts

November 6, 2008

Basic Syntax

This article will cover some very basic syntax elements to jump start the learning of F#. It is not intended to provide a full explanation of each construct so as to make it short.

Assignment

let x = 10

let y = if x> 10 then 1 else 2

let mutable z = 1
z <- z + 1

Notes:
1. Value of x cannot be changed. So we refer x as a
value instead of a variable.
2. z is mutable
3. Use <- operator to change the value of a mutable value
4. Specifying a type is not necessary as the type will be inferred by the RHS value.

Function Declaration

let f n = 10 * n + 2

let f a b = a * 2 + b

Notes:
1. No parenthesis is surrounding the argument
2. No comma to separate arguments


Calling a function

let x = f 10
let y = f 10 + 1
let z = f (x + 10)

Notes:
1. No parenthesis is surrounding the argument
2. y = x +1 as function calling has a higher precedence than binary operators
3. Parenthesis is used to change the association

Recursion

let
rec f n = if n > 0 then (f n-1) * 2 else 1

Notes:
1. rec prefix must be used to allow a function to call itself.
2. Recursive function must have a terminal case (e.g. n = 0 -> 1).

Looping

for i = 1 to 10 do printfn i

for i = 1 to 10 do
printf "Hello,"
printfn "World"

Notes:
1.
printf and printfn are built-in functions for printing to console. printfn terminates the line with a carriage return
2. Indentation is significant to define the boundary of the block (so no
next statement is required)


Conditional

let f n = if n > 10 then
let m = 20
let p = m + n
n
else
n - 1

Notes:
1. Indentation is used to define the block
2. Last expression within a block will be used as the return value
3. If the else part is not defined, compilation error will be resulted

This concludes a general introduction to the basic syntax of F#.