> For the complete documentation index, see [llms.txt](https://haskell.hpmeducation.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://haskell.hpmeducation.com/introduction/immutability.md).

# Immutability

At this point in our training, you need to learn that all values in Haskell are immutable! What exactly does that mean? It means that when you apply a function to some argument, the value of that argument cannot be changed. Instead, you create a new value each time. That means "variable assignment" does not exist in Haskell. Instead, we only assign a *name* to an expression and we know that that *name* will always evaluate only that expression.

```haskell
ghci> let a = [1,2,3]
ghci> reverse a -- reverse is a function that reverses a list...
[3,2,1]
ghci> a -- ...but the value of the expression "a" never changes
[1,2,3]
```
