在将源 AST1 转换为目标 AST2(在 Scala 中构建 DSL 编译器)时,我试图实现某种多态缓存。因为我希望缓存为翻译结果保留精确的类型,所以我使用了无形的 HMap。它按预期工作,但是在某些时候我需要迭代缓存内容以将其转储到必须记录翻译过程的文件中,然后将用于构建从 A2 到 A1 的回译。通过查看 HMap 的源代码,我看到有一个我无法访问的底层 HashMap[Any, Any],因为它不是 HMap 中的 val,而且我看到 HMap 实际上是一个多态函数值,这意味着我可以将它应用到 HList 上,它的类型对应于 HMap 键类型的子集,但我真正想做的是能够折叠一个多态函数,该函数在此 HMap 上接受多态(键,值)参数,以另一种形式检索其内容(例如,在标准 HashMap 元组中切片)。有没有办法做到这一点?最好的事物。
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |