Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
Validators shouldn't know more about the schema they're going to be used with than necessary. If a validator throws errors using the error sum type of a particular schema, then it can't be used with other schemas later that have different error sum types (at least not without writing partial functions).
Because of this we make Fail
a higher order type, so each validator
can return a sum type describing only the failures that can occur in that
validator (or '()' if that validator can only fail in one way).
It's the job of a schema's validate function to unify the errors produced
by the validators it uses into a single error sum type for that schema.
The schema's validate function will return a Fail
with
that sum type as its type argument.
The slightly weird naming (Fail
and Failure
) is so that we can define
a 'type Failure = Fail SchemaErrorType' for each of our schemas, and
export it along with 'Fail(..)'. This way the users of the library only
use Failure
, not Fail
.
Failure | |
|