9得票2回答
使用lens库组合部分getter函数

我正在使用lens包,并且一直在思考以下问题是否有简单的解决方案。假设我有一个地图(或任何At实例),以及一个针对其值类型的透镜,即 aMap :: Map Int a aLens :: Simple Lens a b 我需要一个 getter。 g :: Getter (Map In...

9得票1回答
“市场控制镜头”这个名称的背后有什么原因?

Edward Kmett的光学库;Control.Lens定义了大量类型。 其中大部分都有相对自解释的名称,例如Traversal和Fold。 它还定义了一些名称不太明显的类型,例如Bazaar 来自Bazaar页面: a.k.a. 索引Cartesian存储共同子,索引Kleene...

8得票1回答
为GADTs制作镜头(Haskell)

是否有类似于 makeLenses 的东西可以用在 GADTs 上?假设我们有一个简单的 GADT,例如: data D a b where D :: (Ord a, Ord b) => !a -> !b -> D a b 有没有一种方法可以通过传递构造函数和字段名...

8得票1回答
高效优雅地从一个 case class 结构的列表中删除元素

我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容: 我在一个List中有一个嵌套的case类结构 为了简单起见,我们将使用以下示例 - case class Address(street: String, city: String, state: String, zipC...

8得票3回答
如何修改具有“Seq”字段的嵌套案例类?

一些嵌套的 case 类,其中字段 addresses 是一个 Seq[Address]: // ... means other fields case class Street(name: String, ...) case class Address(street: Street, .....

8得票3回答
使用Data.Lens,如果列表元素满足某些条件,则更改该元素,否则添加新元素

我有一个记录列表,需要一个函数来搜索具有给定名称的记录,并修改该记录的值或者如果没有匹配的记录,则将新记录附加到结果列表中。这是我的代码: import Control.Lens import Control.Applicative ((<$>), pure) import Da...

8得票1回答
Control.Lens是否有性能开销?

我很欣赏Control.Lens包。它真的有助于稍微弱一些的Haskell记录语法。 我正在处理一些库的部分,其中性能是一个问题。 有人知道使用以下方式通过类型类公开的简单镜头与在函数中使用基本模式匹配相比,性能惩罚会是什么吗?像这样使用Lenses有潜力成为解决记录命名空间冲突问题的好方法。...

8得票1回答
如何在执行单子操作并收集结果的情况下使用 Control.Lens 中的 `over` 函数?

问题很简单。我有一个类似于这样的结构: data Foo = Foo [Bar] data Bar = Boo | Moo Item Int data Item = Item String Int 我有一个更改数据结构中Item内容的镜头,如下所示: let foos = [Foo [...

8得票1回答
总结一下Haskell记录的列表

假设我有一份记录列表,我想通过取中位数来对其进行总结。更具体地说,假设我有 data Location = Location { x :: Double, y :: Double } 我有一组测量数据,想要将其总结为一个中位数位置,类似于以下内容: Location (median (...

8得票1回答
使用Lenses是否可以构建新记录?

如果我的记录类型中有透镜,是否可以构建一个新的记录而不使用底层的记录访问器? {-# LANGUAGE TemplateHaskell #-} import Control.Lens import Control.Lens.TH data Foo = Foo { _s :: String...