Вот конструкторы и поля для Node
...
data Node
= NodeElement Element
| NodeInstruction Instruction
| NodeContent Text
| NodeComment Text
... и Element
:
data Element = Element
{ elementName :: Name
, elementAttributes :: Map.Map Name Text
, elementNodes :: [Node]
}
Обратите внимание, что Element
содержит список Node
с, и поэтому вы можете сделать так, чтобы он содержал NodeContent
:
NodeElement $ Element "b" empty [ NodeContent "Title" ]
(ср. этот пример в связанном учебном пособии.)