使用Writer monad验证XML元素序列

时间:2016-01-24 06:55:40

标签: scala validation scalaz writer-monad

这是我old question的后续行动。

假设我需要验证XML:

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

我需要确保根a有子a1a2a3(按此顺序)。

我想使用List(而不是scalaz.Validation)和Writer monad来收集验证错误。所以我定义了一个函数来验证XML元素序列,如下所示:

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

现在我可以添加一个函数来验证XML元素的标签:

val label: String => Validate = ...

如果我将Validate重新定义为Kleisli,我将能够使用Validate撰写andThen个函数:

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

Doest有意义吗?你会如何纠正/简化它?

0 个答案:

没有答案