# Constants & Variables

The next building block after types are constants and variables.

## Constants

Constants are immutable by design, which means their values can't be reassigned.
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 -s pascaligo 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 -s cameligo gitlab-pages/docs/language-basics/src/variables-and-constants/const.mligo age`

# Outputs: 25

## Variables

Variables, unlike constants, are mutable. They can't be used in a *global scope*, but they can be used within functions, or function arguments.

💡 Don't worry if you don't understand the function syntax yet. We'll get to it in upcoming sections of the docs.

`// won't work, 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 + b;

} with c

⚠️ Notice the different assignment operator

`:=`

You can run the `add`

function defined above using the LIGO compiler like this:

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

# Outputs: 2

As expected from a functional language, CameLIGO uses value-binding for variables rather than assignment. Variables are changed by replacement, with a new value being bound in place of the old one.

💡 Don't worry if you don't understand the function syntax yet. We'll get to it in upcoming sections of the docs.

let add(const a: int; const 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 -s cameligo gitlab-pages/docs/language-basics/src/variables-and-constants/add.mligo add '(1,1)' `

# Outputs: 2