10得票1回答
$()结构是什么?

我一直在尝试在Haskell参考文献中查找这个的用法: 我一直在努力查找此代码在Haskell参考资料中的使用:getHomeR = defaultLayout $ do setTitle "My Awesome Site" $(widgetFile "home") 具体来说...

10得票1回答
inline-c和language-c-inline之间有什么区别?

我简要研究了Haskell的类引语库。这些库允许Haskell与其他语言集成。为了与C集成,似乎有两个具有类似功能的包: inline-c language-c-inline(使用language-c-quote) 我正在考虑构建自己的类引语库,因此我对设计选择、API差异和性能感兴趣...

10得票1回答
使用Template Haskell,我如何将同一类型插入多个位置?

我正在为OpenGL类型定义vector-space类的实例,并且为了节省打字的力气,我想使用模板Haskell为我编写一堆实例。我从定义函数来派生AdditiveGroup实例开始,逐渐扩大规模。 {-# LANGUAGE FlexibleInstances #-} {-# LANGUAG...

10得票1回答
将一个模块转化为一个记录

假设我有一个任意的模块module Foo where foo :: Moo -> Goo bar :: Car -> Far baz :: Can -> Haz 其中,foo、bar和baz已经正确实现等。 我想将该模块具体化为自动生成的数据类型和相应对象:import ...

10得票1回答
如何使用 `reify` 获取函数声明?

函数 reify 允许我查找给定名称的信息。对于一个函数,返回的值是 VarI:data Info = ... | VarI Name Type (Maybe Dec) Fixity | ... 我可以检查该函数的类型,也想检查它的声明。但是,在 VarI 的第三个参数中,我始终看到 No...

10得票1回答
Haskell检查记录字段的名称和类型

根据最近的讨论,我被说服使用 Template Haskell 生成一些代码来确保编译时类型安全。 我需要检查记录字段名称和类型。我知道可以使用 constrFields . toConstr :: Data a => a -> [String] 来获取字段名称。但我不仅需要字段...

10得票6回答
在编译时或运行时生成一个随机字符串,并在程序的其余部分使用它。

什么是最好的方法来做到这一点?使用unsafePerformIO?模板Haskell?还是其他什么?我从未使用过其中任何一个,所以不了解它们的详细信息。 请注意,每次运行程序时都将编译该程序,因此在编译时或运行时生成字符串并无影响。我还需要在代码的许多地方使用此字符串,因此我不能按照“正常”...

10得票2回答
有没有一个模板Haskell函数用于引用?

我正在尝试使用模板哈斯克尔(Template Haskell)。我想创建一个准引用器,使我能够为记录创建默认的初始化程序,即像这样的内容: [record| data Config = { shouldDoX = True; featureY :: Integer, optionZ = No...

10得票3回答
模板Haskell中的拼接类型签名

我正在尝试为模板Haskell中的函数创建类型签名。有没有简单的方法可以做到这一点? 目前我已经采取了一些解决方法,但是应该有更简单的方法,对吧? -- TH.hs module Lib.TH (mkFunction) where import Language.Haskell.TH ...

9得票2回答
通过利用多个类型类实例之间的对称性来缩短代码

背景 我正在编写一个Haskell模块,用于表示国际单位制前缀: module Unit.SI.Prefix where 每个国际单位制前缀都有相应的数据类型: data Kilo = Kilo deriving Show data Mega = Mega deriving Show...