# 5.1 Variables

Felix provides a way to create variables using the `var` binder. Again using the bindings from the first and second chapters:

```  include './intro_02';
```

```hello world
3
mytrue
3
2
```

Note that since {intro_02.flx} includes {intro_01.flx} both get included by {include './intro_02';}.

## 5.1.1 The `var` binder

We will now show you the `var` binder. We'll repeat the code, using variables:

```  var hello-world = mycat (mycat (hello, white), world);
myprint (hello-world); myendl();

// show 1 + 2, should be 3
var thre = (myadd (one, two));
myprintln (thre);

// basic axiom check
var onetwo = myadd (one, two);
var twoone = myadd (two, one);
var ok = myeq (onetwo, twoone);

myprint (ok); myendl();
```

```hello world
3
mytrue
```

Note the spelling {hello-world}. Felix allows hyphens in identifiers. So be careful not to write {x-1} and expect that to be considered a subtraction!

## 5.1.2 Simple Assignment

Variables can be assigned new values. For example:

```  var x = one;
myprintln (x);
x = two;
myprintln (x);
```

```1
2
```

The `var` binder requires either a type or an initialiser or both. Here's an example:

```  var y : myint = two;
```4
The first line shows a variable initialised by `two` and the type `myint` given. This serves and an extra check on the type.
On the third line, we have an uninitialised variable of type `myint`. Use of variables before a value is stored in them may have unpredictable results.