# 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 infinitelyTypically,

`>`

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

### 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 2no events occur at time 3

`d`

occurs at time 4,`e`

at time 5, and`f`

at time 6no 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`

returns an event stream with events of type

`b`