# Registry


Surface elaborator registry operations.

## `empty`

_Empty surface elaboration registry._

```
Registry
```

## `emptyRegistry`

_Alias for the empty surface elaboration registry._

```
Registry
```

## `fromHandlers`

_Build a surface registry from an attrset of constructor-tag handlers._

```
{ tag : Handler } -> Registry
```

## `handlerFor`

_Alias for lookup._

```
Registry -> String -> Handler | Null
```

## `isRegistry`

_Predicate for surface elaboration registries._

```
Any -> Bool
```

## `lookup`

_Return the handler registered for a surface constructor tag, or null._

```
Registry -> String -> Handler | Null
```

## `merge`

_Merge two surface registries, rejecting duplicate constructor handlers._

```
Registry -> Registry -> Registry
```

## `node`

_Construct a surface AST node carrying its registry._

```
Registry -> String -> Attrs -> Hoas
```

## `normalize`

_Normalize nullable registry inputs to a registry record._

```
Registry | Null -> Registry
```

## `register`

_Register a handler for one surface constructor tag._

```
Registry -> String -> Handler -> Registry
```

## `withRegistry`

_Attach a surface elaboration registry to an existing node._

```
Registry -> Attrs -> Hoas
```

