gpt4 book ai didi

haskell - 向 haskell 类型添加附加信息

转载 作者:行者123 更新时间:2023-12-02 21:32:45 27 4
gpt4 key购买 nike

我的程序中有 Token 数据类型。它看起来像这样:

data Token
= StringToken Strin
| NumberToken Integer
| IfToken
| ElseToken
... -- lots of tokens here

我在我的解析器ant中使用这个数据类型,它工作得很好。但现在我想向 token 附加一些附加信息(源位置信息)。所以我可以更改我的数据类型声明并使用记录:

data Token
= StringToken {value :: String, srcLoc :: SourceLocation}
| NumberToken {value :: String, srcLoc :: SourceLocation}
| IfToken {srcLoc :: SourceLocation}
| ElseToken {srcLoc :: SourceLocation}
... -- lots of tokens here

但是这个解决方案对我来说似乎不太实用和美观。那么这个问题有没有更好的解决方案呢?谢谢。

最佳答案

是的:

data TokenLoc = TokenLoc {tok::Token , srcLoc::SourceLocation}

这会将 token 和位置存储在一起,但又干净地将它们分开,避免重复。

关于haskell - 向 haskell 类型添加附加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com