最近見かけたHaskell library: valida
validaはproduct type (レコードデータ型)に対するvalidation処理を書くためのライブラリ。validation処理はValidator
型で表現される。
data Validator e inp a
- e: エラーを示す型。基本的にSemigroupであることを想定。発生したエラーはeの(<>)演算子で結合、集積される。
- inp: validationの対象となる入力型。
- a: validation済みのデータを示す出力型。
Validator
はSemigroup e => Applicative (Validator e inp)
というインスタンスを持っている。これにより、applicative styleで出力型aを組み立てることでValidatorを作ることができる。
なお、Validatorを実行するにはrunValidator
を使う、とドキュメントに書いてあるが、runValidator
関数がドキュメントに見当たらない。ソースを読むと、runValidator
はValidator
のdata constructorらしい。型は、
runValidator :: Validator e inp a -> inp -> Validation e a
とのこと。