问题标签 [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.
haskell - 使用“派生”时的模板 Haskell 错误
对我得到的结果有点困惑。使用以下内容:
我得到了这个成功的结果:
但我得到这个错误:
使用 Template Haskell 时无法派生 Show?
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 生成的中间代码。
haskell - 如何在相对于正在编译的文件的文件上使用 TemplateHaskell 的 addDependentFile?
我希望MyDependency.txt
在更改该文件时重新计算使用 IO 并依赖于文件的 TemplateHaskell 表达式。
因此,我addDependentFile "MyDependency.txt"
用来告诉 ghc 在编译我的代码时检查该文件是否有修改。
不幸的是,这不起作用,因为addDependentFile
仅相对于调用 ghc 的目录起作用。
我如何使用它来依赖于我正在编译的文件旁边(在同一目录中)的文件?
haskell - 在 TemplateHaskell 中使用列表
他有一个例子,tupleReplicate
它返回一个函数,该函数接受一个值并复制它:
所以VarE id
返回一个表达式,然后可以与replicate
? id
我的问题是,如果是一个列表,这将如何工作?我想做类似的事情:
除了那不起作用,因为ListE
返回Exp
,而不是[Exp]
。
更一般地说,我想在 TemplateHaskell 中编写一个接受列表并将函数应用于它的函数。
这里有一些示例代码,我正在尝试编写一个类似的函数
haskell - 以字符串形式声明的模板 Haskell 名称
说我有这个:
我想转换tt2
为tt
:
我无法弄清楚???
应该是什么。这可能是因为我还不明白 TH 是如何工作的。有人可以帮忙吗?
haskell - 模板 Haskell:GHC 阶段限制以及如何克服
我在模块中有以下代码:
然后我在主文件中有以下内容:
我想为我$(findx three)
创造findThree = findName "Three"
。但相反,我收到了这个错误:
我该如何克服呢?我宁愿不必在单独的文件中定义one
,等。two
第二个问题是为什么$(findx (Alpha "Four" 4))
工作没有问题?
haskell - 如何从使用 Template Haskell 生成的代码创建非 TH 包?
我正在制作一个小包,它为元组定义包装器并从它们中添加实例,比如
这从 2 到15重复,所以它看起来像是 Template Haskell 的工作。
生成的代码始终与 Haskell 98 兼容,所以我希望最终结果也是 Haskell 98 兼容包。是否可以使用 Template Haskell 生成一段代码并从中制作一个不使用 TH 本身的包?(如果可能的话,我更喜欢自动化的方式。)
haskell - 模板 Haskell:在 GHCi 中具体化
是否有可能在GHCi中进行具体化?
当我使用'runQ'尝试它时,它抱怨“无法在 IO monad 中进行 reify”。
我不是在寻找:t
什么,只是为了快速检查reify
返回的内容而不将其写入文件并将该文件加载到 GHCi 中。
haskell - 在多个函数上绑定一元变量
我有兴趣尽可能接近以下语法。TH对我来说很好。
我想以下是可以接受的
但是注释行是不可接受的,因为 let 绑定只能继续进行。我如何锤击和胶带 ghc 让我这样做?
编辑:
这是我确定的语法
haskell - 根据可用约束确定方法的实现
假设我必须使用以下记忆功能。(请忽略它们是纯净的事实。)
现在我想要一个结构,让我可以选择上述三个备忘录功能中的“最佳”。本质上执行以下操作的东西:
您可以使用类型类尝试此操作,但您会得到重叠的实例:
我也尝试用它cast
来检索约束。我意识到这会在运行时发生,正如我在#haskell 中被告知的那样,这可能是一个坏主意。(为了简洁起见,memoOrd
我省略了这些案例。)memoHash
此代码生成以下错误消息:
在 内移动Eq a
约束会产生一个额外的错误,即对等式Maybe
没有约束。Typeable1
无法从上下文(Typeable a,Typeable b)中推断出(Typeable1 Eq)因使用“cast”而产生
我想要实现的目标是否可能,也许是使用 Template Haskell?还是完全不可能和不希望能够做到这一点?