Here’s how you can return ADTs:
parse =
[ IV, IX, XL, XC, CD, CM, I, V, X, L, C, D, M ]
|> List.map (\rn -> succeed (always rn) |= symbol (toString rn))
|> Parser.oneOf
|> repeat oneOrMore
You just need to remove the quotes around the strings in the sum function now and it should work!