Бесплатная Monad для создания блога в Scala
Предположим, мне нужно добавить сгенерированный канал RSS/Atom для сайта блога. Я думаю о паттерне"Feed Monad Interpreter". То есть я бы определил DSL с примитивами Blog
а также BlogPost
, Free monad
, которое является просто деревом этих примитивов, и RSS/Atom "интерпретаторы", которые преобразуют Free monad
дерево в XML.
Имеет ли это смысл?
2 ответа
Не совсем, потому что XML не является интерпретацией; это структура данных, она имеет скорее смысловую, нежели операционную семантику [1]. Таким образом, вы можете определить свои примитивы, иметь их дерево и преобразовать это чистое дерево в... другое чистое дерево, представляющее XML. Монада не нужна, это может быть просто преобразование данных.
[1] Если я правильно понимаю термины
Как правило, я бы рекомендовал просто использовать систему шаблонов и выходные строки (XML), а не создавать и преобразовывать XML-документы, что может быть довольно дорогостоящим при очень небольшой выгоде в этом случае использования.
Убедитесь, что у вас есть набор тестов, который будет анализировать сгенерированную строку XML, чтобы убедиться, что она действительна и не нарушит людей, потребляющих канал, но помимо этого шаблоны должны работать лучше!