14得票1回答
Haskell: 模板 Haskell 和作用域

这段代码编译通过:data None = None { _f :: Int } type Simpl = Env type Env = Int 不过,我使用这段代码时出现了错误:{-# LANGUAGE TemplateHaskell #-} import Control.Lens dat...

13得票1回答
强制预计算常量

我在Haskell中有一个常量声明 - 我能强制它提前评估吗?我看到一些大致如下的代码:myList = [(a, b), (c, d)] ... map (f . fst) myList 如果我对 fst 进行分析(它要调用 168M 次),会在执行时花费一定的时间。虽然 myList 的二...

12得票1回答
如何在使用 Template Haskell 函数时消除 $(...) 和 [| ... |] 语法?

我正在学习一些模板Haskell。作为一种练习,我编写了一个可以生成类似于isLeft和isRight这样的函数(受这个问题启发)。这是我的尝试:isA connam = do ConE nam <- connam nn <- newName "p" lam...

11得票1回答
模板哈斯克尔中的数据构造器

我想要创建环Z/n(类似于正常的算术,但模一些整数)。一个例子实例是Z4:instance Additive.C Z4 where zero = Z4 0 (Z4 x) + (Z4 y) = Z4 $ (x + y) `mod` 4 同样地,对于环也是这样。我希望能够快速生成这些内容,...

11得票2回答
有没有一个(Template) Haskell库可以让我打印/转储一些本地绑定和它们各自的名称?

例如:let x = 1 in putStrLn [dump|x, x+1|] 会打印出类似于x=1, (x+1)=2 即使目前没有类似的东西,是否有可能编写类似的东西呢?

11得票5回答
输出函数名的函数

在Haskell中,是否能够实现一个函数,它返回自己的函数名? 可能的类型可以是(a -> b) -> String。

11得票2回答
我该如何轻松查看模板Haskell语句的输出?

我在我的模块中使用以下模板Haskell代码,它是一个较大应用程序的一部分。$(derive makeFoldable ''JStatement) 我怀疑生成的 Foldable 实例与我最初想到的并不完全一样,但是我找不到验证的方法。所以,最好只使用 ghci,是否可以查看生成的实例? 我...

11得票2回答
能否在运行时生成和运行TemplateHaskell生成的代码?

是否可能在运行时生成和运行模板哈斯克尔(TemplateHaskell)生成的代码? 在运行时,使用C语言,我可以: 创建一个函数的源码, 调用gcc将其编译为.so文件(在Linux中),或者使用llvm等其他工具, 加载.so文件, 并调用该函数。 在模板哈斯克尔上能否做类似的事情呢?

11得票2回答
我能否使用模板Haskell来定义缺失的函数?

我遇到了一个情况,需要在不同的机器上编译一些Haskell代码。至少其中一台机器有一个相当旧的Control.Concurrent.STM版本,它不知道modifyTVar。我的当前解决方法是从更新的版本中复制modifyTVar的代码。这让我想知道,是否可能使用template Haskel...

10得票2回答
使用模板Haskell生成一个函数。

使用模板Haskell定义函数是否可能?例如convertStringToValue :: String -> Int convertStringToValue "three" = 3 convertStringToValue "four" = 4 我还有一个Map [Char] Int...