Skip to content

mutable

pannous edited this page Nov 14, 2020 · 8 revisions

There are two kinds of mutability:

  • mutable variables can point to different objects during their lifetime.
  • mutable objects can change during their lifetime.
x="hello"
x+=" world" # ok, value was mutable
x="bye" # ok, variable was mutable

* immutable variables point to the same object during their lifetime.
* immutable objects stay completely unchanged during their lifetime.

The first variant is called 'let' variable:

let x="hello" x+=" world" # ok, value was mutable x="bye" # error: variable was immutable


Both properties can be combined with the `constant` keyword or with the [[:=]] sigil:

constant x = "hello" x := "hello" # ok redundant redeclaration x+="ok" # error: immutable value x="hi" # error: constant variable


This is near identical to JavaScript's:  
`Uncaught SyntaxError: Identifier 'x' has already been declared`
`Uncaught TypeError: Assignment to constant variable.`

With the only difference being:
If the value is identical then it is OK to re-declare a variable.
In JavaScript it is allowed to re-declare variables without let:

let x=1 x=2 # ok let x=2 # error

Home

Philosophy

data & code blocks

features

inventions

evaluation

keywords

iteration

tasks

examples

todo : bad ideas and open questions

⚠️ specification and progress are out of sync

Clone this wiki locally