我的程序中有 Token 数据类型。它看起来像这样:
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
但是这个解决方案对我来说似乎不是很实用和美观。那么这个问题有更好的解决方案吗?谢谢。