2

我正在寻找与此类似的东西:

runQExpDynamically :: (GhcMonad m) => Q Exp -> m Dynamic

文档:GhcMonadQ ExpDynamic

我正在寻找组合我的两个代码示例的方法;一种用于动态评估haskell 代码,另一种用于使用模板haskell 动态组合haskell。换句话说,在 GhcMonad 中运行 Q 表达式:表达式。

我会解决这个问题,我应该在这里记录。

一些想法

我目前发现可行的方法是将表达式序列化并将其输入到动态评估中。序列化必须以某种方式在 Q monad 内部完成。我也许可以使用 Exp 实现Ppr prettyprinter类。但是,我可能会以这种方式失去一些类型安全性?可能有更清洁(更卫生”?)的方式。我应该更多地研究 Data.Dynamic以了解动态值的工作原理。

编辑:我现在意识到 Dynamic 只代表值,而我想运行 Q Exp 'declarations'。我想将数据类型添加到动态上下文中。

4

0 回答 0