This is what I have so far.
let Swap (left : int , right : int ) = (right, left)
let mutable x = 5
let mutable y = 10
let (newX, newY) = Swap(x, y) //<--thi
The code you have commented doesn't work because when you write "x, y" you create a new tuple that is an immutable value, so can't be updated. You could create a mutable tuple and then overwrite it with the result of the swap function if you want:
let mutable toto = 5, 10
let swap (x, y) = y, x
toto <- swap toto
My advice would be to investigate the immutable side of F#, look at the ways you can use immutable structures to achieve what you previously would have done using mutable values.
Rob
F# has "by reference" parameters just like C#, so you can write a classic swap function similarly:
let swap (x: byref<'a>) (y: byref<'a>) =
let temp = x
x <- y
y <- temp
let mutable x,y = 1,2
swap &x &y
You can't; there's no syntax to update 'more than one mutable variable' with a single assignment. Of course you can do
let newX, newY = Swap(x,y)
x <- newX
y <- newY