列出 Quasiquote monad 中的所有固定性声明

Listing all fixity declarations in Quasiquote monad

我想列出 Quasiquote monad 中的所有固定性声明,以便我能够将所有中缀运算符从 Haskell 语法传递到我的 Quasiquote 语法。

template-haskell 中有什么方法可以让我这样做吗?我找不到。

谢谢。

经过进一步研究,我在GHC Gitlab中找到了相关的issue

问题无法解决,因为编译逻辑不允许。例如,可能有两个模板,它们都进行了新的固定性声明,因此如果它们都试图列出所有模板,它们可能会以无限循环结束。

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

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

语法粗心和类型忽略示例: UInfixE 1 * (UnfixE 2 + 3) 模板传递的 UInfixE 1 * (UnfixE 2 + 3) 在编译的后期阶段转换为 InfixE (InfixE 1 * 2) + 3