> For the complete documentation index, see [llms.txt](https://www.strickland.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.strickland.io/composition.md).

# Composition

The examples we've seen so far only validate single values against single validators. But Strickland gains the bulk of its power through composition of validators. Because every validator is simply a function, it is easy to create a function that executes multiple validators. Validators themselves can invoke the `validate` function to collect results of multiple validators and combine them together into top-level validation results.

* [Arrays of Validators](/composition/arrays-of-validators.md)
  * [every](/composition/arrays-of-validators/every.md)
  * [all](/composition/arrays-of-validators/all.md)
  * [some](/composition/arrays-of-validators/some.md)
* [Validating Array Elements](/composition/validating-array-elements.md)
  * [arrayElements](/composition/validating-array-elements/arrayelements.md)
* [Validating Objects](/composition/validating-objects.md)
  * [objectProps](/composition/validating-objects/objectprops.md)
  * [Advanced Object Validation](/composition/validating-objects/advanced-object-validation.md)
  * [Nested Objects](/composition/validating-objects/nested-objects.md)
  * [Arrays of Objects](/composition/validating-objects/arrays-of-objects.md)
* [Array and Object Conventions](/composition/array-and-object-conventions.md)
