1

我想列出 Quasiquote monad 中的所有固定性声明,这样我就可以将 Haskell 语法中的所有中缀运算符传递给我的 Quasiquote 语法。

请问有什么方法template-haskell可以让我这样做吗?我找不到任何东西。

谢谢。

4

1 回答 1

0

经过进一步研究,我在 GHC Gitlab 中发现了相关问题。

这个问题没有任何解决方案,因为编译逻辑不允许这样做。例如,可能有两个模板,它们都做出了新的固定性声明,因此如果它们都试图将它们全部列出,它们可能会以无限循环结束。

如果我为什么要获取所有固定性声明的唯一原因是解析中缀运算符以供 Haskell 稍后使用,UInfixE Exp Exp Exp则建议使用 of。

使用创建的任意树UInfixE稍后由 Haskell 编译器处理为正确的"InfixE"树,因此使用所有固定性声明正确处理表达式。

语法粗心和类型忽略示例: UInfixE 1 * (UnfixE 2 + 3)由模板传递的在编译的后期阶段被转换,当所有固定性声明都已知时,InfixE (InfixE 1 * 2) + 3

于 2022-02-22T21:46:53.083 回答