Variables

In Wipple, variables are defined using a colon (:):

name : "Wilson"
show name

sum : 1 + 2
show sum
Wilson
3

You can create multiple variables with the same name. When you refer to a name in your code, the most recent variable is chosen:

n : 1
show n

n : 2
show n
1
2

Each declaration is its own variable with its own value; they don’t need to be the same type:

n : 1
show n

n : "n"
show n
1
n

The right-hand side of the : is evaluated before bringing the variable into scope:

n : 1
n : n + 1
show n
2

A variable can only be accessed after it’s defined, not before:

n : n + 1
n : 1
show n
example:1:5: error: can't find `n`

Sometimes, you need to change the value of an existing variable. You can do this by putting an exclamation mark (!) after the variable name:

n : 0
n! : n + 1
show n

Now, any code that refers to n will observe the updated value.