免费的 Monad 在 Scala 中生成博客提要
Free Monad to generate blog feed in Scala
假设我需要为博客站点添加生成一个 RSS/Atom 提要。我正在考虑 "Feed Monad Interpreter" pattern。也就是说,我会用原语 Blog
和 BlogPost
定义一个 DSL,一个 Free monad
,它只是这些原语的树,而 RSS/Atom "interpeters"将 Free monad
树转换为 XML.
有意义吗?
不是真的,因为 XML 不是解释;它是一种数据结构,它具有指称而不仅仅是操作语义[1]。所以你可以定义你的基元,并拥有它们的树,然后将那棵纯树转换为......另一棵代表 XML 的纯树。不需要 monad,这可以只是一个纯数据转换。
[1] 假设我正确理解这些条款
一般来说,我建议只使用模板系统和输出 (XML) 字符串,而不是创建和转换 XML 文档,在这个用例中,这可能非常昂贵,但收益却很少。
确保你有一个测试套件来解析生成的 XML 字符串以确认它是有效的并且不会破坏使用提要的人,但除此之外,模板应该工作得更好!
假设我需要为博客站点添加生成一个 RSS/Atom 提要。我正在考虑 "Feed Monad Interpreter" pattern。也就是说,我会用原语 Blog
和 BlogPost
定义一个 DSL,一个 Free monad
,它只是这些原语的树,而 RSS/Atom "interpeters"将 Free monad
树转换为 XML.
有意义吗?
不是真的,因为 XML 不是解释;它是一种数据结构,它具有指称而不仅仅是操作语义[1]。所以你可以定义你的基元,并拥有它们的树,然后将那棵纯树转换为......另一棵代表 XML 的纯树。不需要 monad,这可以只是一个纯数据转换。
[1] 假设我正确理解这些条款
一般来说,我建议只使用模板系统和输出 (XML) 字符串,而不是创建和转换 XML 文档,在这个用例中,这可能非常昂贵,但收益却很少。
确保你有一个测试套件来解析生成的 XML 字符串以确认它是有效的并且不会破坏使用提要的人,但除此之外,模板应该工作得更好!