Babblings of an aging geek in love with the Absurd, his family, and his own hubris.... oh, and Lisp.

# Data Structures

Let’s suppose we have all the information and we want to tell a person that she is Merlin and knows who everyone is… how would we organize that data?

## Lists

### Simple Lists

```database = [ 'dogs', 32, 'cats', 42, 'birds', 5 ];
```

Access with subscripts?

```database[1] // 'dogs'
```

### Tuples

Better organization:

```database = [ ['dogs', 32], ['cats', 42], ['birds', 5] ];
```

How many pets in our database?

```database.length // 3
```

### Helper Functions

Lists are fine if you have functions to help:

```function pets(data, id) {
return data[id];
}

function pet_name(data, id) {
return pets(data, id)[0];
}

function pet_amount(data, id) {
return pets(data, id)[1];
}

pet_name(database, 2)   // => 'birds'
pet_amount(database, 2) // => 5
```

### Looping

Display all our pets?

```for (var i=0; i < database.length; i++) {
console.log( "We have " + pet_amount(database, i) +
" " + pet_name(database, i) );
}
```

## Maps

Maps are better for data:

```database = { 'dogs': 32, 'cats': 42, 'birds': 5 };
```

The pythonic approach (called dictionaries):

```database['dogs']
```

JavaScript is easier:

```database.dogs //> 32
```

### Looping

Quite easy too:

```for (var pet in database) {
console.log("We have " + database[key] + " " + key);
}
```