最近見かけたHaskell library: valida

validaはproduct type (レコードデータ型)に対するvalidation処理を書くためのライブラリ。validation処理はValidator型で表現される。

data Validator e inp a
  • e: エラーを示す型。基本的にSemigroupであることを想定。発生したエラーはeの(<>)演算子で結合、集積される。
  • inp: validationの対象となる入力型。
  • a: validation済みのデータを示す出力型。

ValidatorSemigroup e => Applicative (Validator e inp)というインスタンスを持っている。これにより、applicative styleで出力型aを組み立てることでValidatorを作ることができる。

なお、Validatorを実行するにはrunValidatorを使う、とドキュメントに書いてあるが、runValidator関数がドキュメントに見当たらない。ソースを読むと、runValidatorValidatorのdata constructorらしい。型は、

runValidator :: Validator e inp a -> inp -> Validation e a

とのこと。