问题标签 [template-haskell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
168 浏览

haskell - 使用“派生”时的模板 Haskell 错误

对我得到的结果有点困惑。使用以下内容:

我得到了这个成功的结果:

但我得到这个错误:

使用 Template Haskell 时无法派生 Show?

0 投票
2 回答
3430 浏览

haskell - GHC -ddump-splices 选项——Haskell 模板

我正在关注 Yesod 的书,其中指出:

但是通过使用 -ddump-splices GHC 选项,我们可以立即查看生成的代码。它的一个非常干净的版本是:

我该怎么做?我试过用 编译我的文件ghc -XTemplateHaskell -ddump-splices Page.hs,它留下的目录如下:

Page Page.hi Page.hs Page.hs~ Page.o

然而,这些文件都不包含由 Template Haskell 生成的中间代码。

http://www.yesodweb.com/book/basics

0 投票
1 回答
297 浏览

haskell - 如何在相对于正在编译的文件的文件上使用 TemplateHaskell 的 addDependentFile?

我希望MyDependency.txt在更改该文件时重新计算使用 IO 并依赖于文件的 TemplateHaskell 表达式。

因此,我addDependentFile "MyDependency.txt"用来告诉 ghc 在编译我的代码时检查该文件是否有修改。

不幸的是,这不起作用,因为addDependentFile仅相对于调用 ghc 的目录起作用。

我如何使用它来依赖于我正在编译的文件旁边(在同一目录中)的文件?

0 投票
1 回答
184 浏览

haskell - 在 TemplateHaskell 中使用列表

这是我正在使用的教程

他有一个例子,tupleReplicate它返回一个函数,该函数接受一个值并复制它:

所以VarE id返回一个表达式,然后可以与replicate? id我的问题是,如果是一个列表,这将如何工作?我想做类似的事情:

除了那不起作用,因为ListE返回Exp,而不是[Exp]

更一般地说,我想在 TemplateHaskell 中编写一个接受列表并将函数应用于它的函数。


这里有一些示例代码,我正在尝试编写一个类似的函数

0 投票
1 回答
290 浏览

haskell - 以字符串形式声明的模板 Haskell 名称

说我有这个:

我想转换tt2tt

我无法弄清楚???应该是什么。这可能是因为我还不明白 TH 是如何工作的。有人可以帮忙吗?

0 投票
1 回答
1674 浏览

haskell - 模板 Haskell:GHC 阶段限制以及如何克服

我在模块中有以下代码:

然后我在主文件中有以下内容:

我想为我$(findx three)创造findThree = findName "Three"。但相反,我收到了这个错误:

我该如何克服呢?我宁愿不必在单独的文件中定义one,等。two

第二个问题是为什么$(findx (Alpha "Four" 4))工作没有问题?

0 投票
2 回答
187 浏览

haskell - 如何从使用 Template Haskell 生成的代码创建非 TH 包?

我正在制作一个小包,它为元组定义包装器并从它们中添加实例,比如

这从 2 到15重复,所以它看起来像是 Template Haskell 的工作。

生成的代码始终与 Haskell 98 兼容,所以我希望最终结果也是 Haskell 98 兼容包。是否可以使用 Template Haskell 生成一段代码并从中制作一个不使用 TH 本身的包?(如果可能的话,我更喜欢自动化的方式。)

0 投票
1 回答
1695 浏览

haskell - 模板 Haskell:在 GHCi 中具体化

是否有可能在GHCi中进行具体化?

当我使用'runQ'尝试它时,它抱怨“无法在 IO monad 中进行 reify”。

我不是在寻找:t什么,只是为了快速检查reify返回的内容而不将其写入文件并将该文件加载到 GHCi 中。

0 投票
1 回答
145 浏览

haskell - 在多个函数上绑定一元变量

我有兴趣尽可能接近以下语法。TH对我来说很好。

我想以下是可以接受的

但是注释行是不可接受的,因为 let 绑定只能继续进行。我如何锤击和胶带 ghc 让我这样做?

编辑:

这是我确定的语法

0 投票
1 回答
192 浏览

haskell - 根据可用约束确定方法的实现

假设我必须使用以下记忆功能。(请忽略它们是纯净的事实。)

现在我想要一个结构,让我可以选择上述三个备忘录功能中的“最佳”。本质上执行以下操作的东西:

您可以使用类型类尝试此操作,但您会得到重叠的实例:

我也尝试用它cast来检索约束。我意识到这会在运行时发生,正如我在#haskell 中被告知的那样,这可能是一个坏主意。(为了简洁起见,memoOrd我省略了这些案例。)memoHash

此代码生成以下错误消息:

在 内移动Eq a约束会产生一个额外的错误,即对等式Maybe没有约束。Typeable1

无法从上下文(Typeable a,Typeable b)中推断出(Typeable1 Eq)因使用“cast”而产生

我想要实现的目标是否可能,也许是使用 Template Haskell?还是完全不可能和不希望能够做到这一点?