`let .. in ..` is an expression with some scoped variables, separated by newlines:

```haskell
let
  a = 1
  b = 2
in
  a + b
```

> [!tip]
> there is a second local let-binding syntax, `where`:
> ```haskell
> a + b
>   where
>     a = 1
>     b = 2
> ```

### Examples

Recursive Fibonacci generator, using a helper function `go`
```haskell
fib n =
  let
    go ns a b =
      if Array.length ns == n then
        ns
      else
        go (ns <> [a]) b (a + b)
  in
    go [] 1 1
```
