9得票1回答
使用模板Haskell在编译时评估函数

我正在编写一个简单的 HashString 类,它由一个字符串和其哈希值组成: data HashString = HashString Int -- ^ hash T.Text -- ^ string! 现在,我正尝试使用...

9得票3回答
使用记录字段名作为变量的Template Haskell?

我有以下一段代码,实现了一个Monad。我试图使用它来简化以后更复杂逻辑的字段设置。 data Rec = Rec { alpha :: Int, beta :: Double, } deriving (Show) defaultRec = Rec 0 0 0 data ...

9得票2回答
Template Haskell:如何提取函数的参数个数?

我有一个函数,它接收一个Name作为参数并将其增强,生成另一个应用于其他内容的函数(细节不是很重要): mkSimple :: Name -> Int -> Q [Dec] mkSimple adapteeName argsNum = do adapterName <-...

9得票1回答
“Template Haskell + C” bug的解决方法?

我遇到了以下情况: 库 X 是 C 代码的封装。 库 A 依赖于库 X。 库 B 使用模板 Haskell 并依赖于库 A。 GHC bug #9010 使得在 GHC 7.6 中安装库 B 不可能。在处理 TH 时,GHCi 尝试加载库 X,但会失败并显示如下消息: Loading...

9得票1回答
在记录中映射标识函子。

我有一个记录类型,就像这样: data VehicleState f = VehicleState { orientation :: f (Quaternion Double), ...

9得票1回答
带参数的QuasiQuote

我希望在Haskell中编写一份报价单。需要将名称参数传递到gen函数中以生成声明。 quote :: String -> QuasiQuoter quote name = QuasiQuoter { quoteExp = undefined, quote...

9得票2回答
如何绕过GHC阶段限制?

我正在编写一个代码生成器,其输出取决于存储在类实例中的数据类型字段描述。然而,我找不到如何运行带有 TH 生成参数的函数。 {-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-} module Generator where import ...

8得票2回答
在Haskell中进行多项式因式分解

在hammar的帮助下,我制作了一个模板Haskell位,它可以编译。 $(zModP 5) to newtype Z5 = Z5 Int instance Additive.C Z5 where (Z5 x) + (Z5 y) = Z5 $ (x + y) `mod` 5 .....

8得票2回答
获取函数名称内部

我有一堆函数,比如:method1、method2、method3。对于它们中的每一个,都有相应的HUnit测试函数,例如:testMethod1、testMethod2、testMethod3。 testMethod1 = TestCase $ assertEqual "testmet...

8得票1回答
在Haskell的Aeson中如何省略空值/空字段

我有一个类型。 {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE MultiWayIf #-} import GHC.Generics import Data.Aeson....