如何迁移此模板Haskell Lift实例到版本2.18
我有一个 lift 实例,可与Template-Haskell 2.14一起使用,但不会使用以后的版本进行编译。有人可以解释需要哪些更改? {-# LANGUAGE FlexibleInstanc…
使用 Template Haskell 在编译时评估函数
我正在编写一个简单的 HashString 类,它只是一个字符串及其哈希值: data HashString = HashString Int -- ^ hash T.Text -- ^ string! 现在我尝试在…
Haskell 是否有指向记录成员的指针/引用?
我可以使用 ::*、.* 和 ->* 语法创建和引用 C++ 中结构成员的相对指针,例如: char* fstab_t::*field = &fstab_t::fs_vfstype; my_fstab.*field = ..…
派生 Show 的模板 Haskell 数据声明
以下内容无法编译: import Language.Haskell.TH makeAlpha n = [d| data Alpha = Alpha $(conT n) deriving (Show, Read) |] 我根本无法弄清楚错误的…
Haskell 内省记录的字段名称和类型
根据最近的交流,我已经确信使用 Template Haskell 生成一些代码以确保编译时类型安全。 我需要内省记录字段名称和类型。我知道我可以获取字段名称 通…
查看 Template Haskell 生成的代码的首选方法
如您所知,Template Haskell 用于在编译时以编程方式生成各种 AST 拼接。 然而,拼接通常非常不透明,并且通常很难辨别拼接实际生成的内容。如果您为…
获取 Haskell 记录的字段名称作为字符串列表?
假设我有以下内容: data Rec = Rec { alpha :: Int, beta :: Double, phi :: Float } sample = Rec 1 2.3 4.5 我了解 Template Haskell & reify 函数…
模板 Haskell 将记录字段名称作为变量?
我有以下一段实现 monad 的代码。我试图用它来简化稍后具有更复杂逻辑的字段的设置。 data Rec = Rec { alpha :: Int, beta :: Double, } deriving (S…
使用Template Haskell,如何将相同类型拼接到多个位置?
我正在为 vector-space 定义类的实例://hackage.haskell.org/package/OpenGL" rel="noreferrer">OpenGL 类型,为了节省我的打字肌肉,我想使用 Templa…
也许是动态调度、智能构造函数、Template Haskell?
我正在查看 HaskellWiki >;存在类型 # 动态调度机制。 我在想,Template Haskell 中应该有一种方法来获取这部分: class Shape_ a where ... type Ra…
Haskell 中的多项式因式分解
在 hammar 的帮助下,我制作了一个模板 Haskell 位,它编译 $(zModP 5) 为 newtype Z5 = Z5 Int instance Additive.C Z5 where (Z5 x) + (Z5 y) = Z5 …
如何动态调用同一签名中多个模块中定义的函数
我定义了很多函数(比如 100 多个),每个函数都执行特定的工作,但具有相同的签名。这就像: module R001 (run) where run = module R002 (run) wher…
如何检查 Template Haskell 中引用的数据构造函数名称?
我正在尝试学习一些 Haskell 模板。作为练习,我编写了一个可以生成诸如 isLeft 和 isRight 之类的函数(受到 这个问题)。这是我的尝试: isA connam…
如何摆脱 $(...) 和 [| ... |] 使用模板 Haskell 函数时的语法?
我正在尝试学习一些 Haskell 模板。作为练习,我编写了一个可以生成诸如 isLeft 和 isRight 之类的函数(受到 这个问题)。这是我的尝试: isA connam…