Ich schreibe einen SVG-Parser, hauptsächlich als Übung, um zu lernen, wie man Parsec benutzt. Derzeit bin ich mit den folgenden Datentyp meiner SVG-Datei dar:SVG-Parsing und Datentyp
data SVG = Element String [Attribute] [SVG]
| SelfClosingTag [Attribute]
| Body String
| Comment String
| XMLDecl String
Das funktioniert ganz gut, aber ich bin nicht sicher über die Element String [Attribute] [SVG]
Teil meiner Datentyp. Da es nur eine begrenzte Anzahl von möglichen tags für ein SVG gibt, habe ich darüber nachgedacht, einen Typ zu verwenden, um ein SVG-Element darzustellen, anstatt einen String zu verwenden. Etwas wie dieses:
data SVG = Element TagName [Attribute] [SVG]
| ...
data TagName = A
| AltGlyph
| AltGlyphDef
...
| View
| Vkern
Ist es eine gute Idee? Was wären die Vorteile, dies zu tun, wenn es welche gibt? Gibt es eine elegantere Lösung?