# Notation¶

## Timeline notation¶

You’ll see diagrams like this:

```
stream1: -a-b-c-d->
stream2: -a--b---c|
stream3: -abc-def-X
```

These are timeline diagrams that try to give a simple, representative notion of how a stream behaves over time. Time proceeds from left to right, using letters and symbols to indicate certain things:

- letters (a,b,c,d,etc) - an event that occurs at a particular time
`-`

- a time when no event occurs`|`

- event stream ended`X`

- an error occurred`>`

- stream continues infinitely- Typically,
`>`

means you can assume that events will continue to repeat some common pattern infinitely

- Typically,

### Examples¶

```
stream: a|
```

a occurs at time 0 and then the event stream ends immediately.

```
stream: a-b---|
```

a occurs at time 0, b at time 2, and the event stream ends at time 6.

```
stream: a-b-X
```

a occurs at time 0, b at time 2, and the event stream fails at time 4.

```
stream: abc-def->
```

An event stream where:

`a`

occurs at time 0,`b`

at time 1, and`c`

at time 2- no events occur at time 3
`d`

occurs at time 4,`e`

at time 5, and`f`

at time 6- no events occur at time 7
- the pattern continues infinitely, repeating a similar pattern

## Functions and Types¶

You’ll see function signatures like this:

```
numberToString :: Number -> String
```

This is Haskell-like notation for a function which:

- is named
`numberToString`

- takes a
`Number`

- returns a
`String`

### Example¶

Here’s a more realistic example:

```
map :: (a -> b) -> Stream a -> Stream b
```

This is a function which:

- is named
`map`

- has 2
*type parameters*`a`

and`b`

- takes 2 arguments
- another function with signature
`(a -> b)`

- an event stream with events of type
`a`

- another function with signature
- returns an event stream with events of type
`b`