# Constants & Variables

The next building block after types are *constants* and *variables*.

## Constants

Constants are immutable by design, which means their values cannot be
reassigned. Put in another way, they can be assigned once, at their
declaration. When defining a constant you need to provide a `name`

,
`type`

and a `value`

:

`const age : int = 25`

You can evaluate the constant definition above using the following CLI command:

`ligo evaluate-value gitlab-pages/docs/language-basics/src/variables-and-constants/const.ligo age`

# Outputs: 25

`let age : int = 25`

You can evaluate the constant definition above using the following CLI command:

`ligo evaluate-value gitlab-pages/docs/language-basics/src/variables-and-constants/const.mligo age`

# Outputs: 25

`let age : int = 25;`

You can evaluate the constant definition above using the following CLI command:

`ligo evaluate-value gitlab-pages/docs/language-basics/src/variables-and-constants/const.religo age`

# Outputs: 25

## Variables

Variables, unlike constants, are *mutable*. They cannot be declared in
a *global scope*, but they can be declared and used within functions,
or as function parameters.

⚠️ Please be wary that mutation only works within the function scope itself, values outside of the function scope will not be affected.

`// The following is invalid: use `const` for global values instead.`

// var four : int := 4

function add (const a : int; const b : int) : int is

block {

var c : int := a + 2*b;

c := c - b

} with c

⚠️ Notice the assignment operator

`:=`

for`var`

, instead of`=`

for constants.

You can run the `add`

function defined above using the LIGO compiler
like this:

`ligo run-function gitlab-pages/docs/language-basics/src/variables-and-constants/add.ligo add '(1,1)'`

# Outputs: 2

As expected in the pure subset of a functional language, CameLIGO only
features *constant values*: once they are declared, the value cannot
be changed (or "mutated").

`let add (a : int) (b : int) : int =`

let c : int = a + b in c

You can run the `add`

function defined above using the LIGO compiler
like this:

`ligo run-function gitlab-pages/docs/language-basics/src/variables-and-constants/add.mligo add '(1,1)'`

# Outputs: 2

As expected in the pure subset of a functional language, ReasonLIGO
only features *constant values*: once they are declared, the value
cannot be changed (or "mutated").

`let add = ((a, b): (int, int)): int => {`

let c : int = a + b;

c;

};

You can run the `add`

function defined above using the LIGO compiler
like this:

`ligo run-function gitlab-pages/docs/language-basics/src/variables-and-constants/add.religo add '(1,1)'`

# Outputs: 2