For a variable:

V: ? T

V may be assigned a new value by means of the assignment statement

V := exp

where exp returns a value of type T.

If := is defined as a binary pattern in T, the semantics is different - see below.

This is the case for simple values

V: ? Integer
B: ? Boolean
C: ? Char

V :=  117
B := True
C := 'x'

For non-simple objects like

S: ? String
T: ? Record

A reference may be assigned:

S := "Hello world"
T := Record

Redefinition of assignment

It is possible to redefine := as a binary pattern:

MyPtn(x: ? integer):
   := y: ? integer:
      x := y

Q: ? MyPtn(12) -- Q.x is initially 12
Q := 13 -- Q.x = 12