ConverterとValidator

面白そうな議論なので。

つまり、値の検証をしてそのまま値を返すのがValidator、値の検証をして変換という付加機能をつけて値を返すのがConverterだ。つまりConverterはValidatorの特殊形態と捉える感じ。

2008-09-20

私は逆で、ValidatorがConverterの特殊形態だと思ってます。

Converterってのは名前のとおり変換関数で、ある値のクラスαを別のクラスβに変換する変換関数α->βとすると、Validatorは入力がvalidである限りは何も変換を行わない恒等変換α->αで、validでない場合にα->_|_ (実行停止)となる、って感じ。

つまり、

  • Converter は入力に対する定義域の検査と写像変換
  • Validator は入力に対する定義域の検査と恒等変換

って感じで、Validatorは常に写像変換関数に恒等変換を使うという特殊例と捉える。

こう考えたほうが、ValidatorやConverterのチェインを作るときに、単純に合成関数を作るだけなのですっきりするんじゃないかなと思ってます。