- variables are declared in a given scope
- variables are BOUND to values, no assigned
- variables are typed, can only hold appropriate values
- variables which hold simple things: $a
- variables which hold list things: @s
let $s as string := "boring"
let $xml as xml := <message>this must be valid XML</message>
let @s as list := ("rumsti", <message>yet another</message>, $s)