У меня есть тип данных Token в моей программе. Это выглядит примерно так:Добавить дополнительную информацию к haskell type
data Token
= StringToken Strin
| NumberToken Integer
| IfToken
| ElseToken
... -- lots of tokens here
Я использую этот тип данных в своем парсерном мураве, и он отлично работает. Но теперь я хочу добавить дополнительную информацию к токенам (информация о местоположении источника). Поэтому я могу изменить свою декларацию типа данных и использовать записи:
data Token
= StringToken {value :: String, srcLoc :: SourceLocation}
| NumberToken {value :: String, srcLoc :: SourceLocation}
| IfToken {srcLoc :: SourceLocation}
| ElseToken {srcLoc :: SourceLocation}
... -- lots of tokens here
Но это решение кажется мне не очень практичным и красивым. Так лучше ли решение этой проблемы? Спасибо.
http://stackoverflow.com/questions/16204177/how-should-i-represent-an-ast-annotated-with-additional-information – Arjan
@Arjan спасибо, это полезная ссылка для меня. – sergeyz