
# Lazy

`Lazy` is used when applying default values to objects. It's mostly used with `Type.validate`.

This is only useful for `Reference` types. `Value` types work the same with and without `Lazy`.

```Coffeescript
defaults:
	renderer: Lazy -> Renderer()
```

Since the fake `Renderer` above takes no arguments, you can make things even shorter.

```Coffeescript
defaults:
	renderer: Lazy Renderer
```

Now, whenever `options.renderer` is `undefined`, a new `Renderer` will be created for each instance.

Without `Lazy`, the same instance of `Renderer` would be assigned to each validated object.

```Coffeescript
defaults:
	renderer: Renderer() # be careful! are you sure this what you want? the answer is usually no for Reference types.
```
