2

これは私の古い質問へのフォローアップです。

XML を検証する必要があるとします。

<a><a1/><a2/><a3/></a>

ルートに、、および(この順序で)のa子があることを確認する必要があります。a1a2a3

List(の代わりにscalaz.Validation) とWriterモナドを使用して、検証エラーを収集したいと思います。そこで、次のような一連の XML 要素を検証する関数を定義します。

type Validate = List[Elem] => Writer[List[String], List[Elem]]

これで、XML 要素のラベルを検証する関数を追加できます。

val label: String => Validate = ...

関数を次のように構成できるように再定義すると、次のValidateようになります。KleisliValidateandThen

val children: Validate = label("a1") andThen label("a2") andThen label("a3")

それは理にかなっていますか?どのように修正/簡素化しますか?

4

0 に答える 0