将吸气剂结合在一起

尼基塔·沃尔科夫(Nikita Volkov)

本着以下问题的精神:

我现在正在寻找一种将多个Getter组合到一个Fold中的方法,以便如下所示:

('a','b','c','d') ^.. (_1 <> _2 <> _3)

会导致以下结果:

['a', 'b', 'c']

但是上面的代码实际上失败,并显示以下消息:

No instance for (Monoid
                   (Accessor (Endo [Char]) (Char, Char, Char, Char)))
  arising from a use of `<>'

那么我该如何实现呢?这有可能吗?

本诺夫斯

在此答案中发布的Monoid实例中,这也是可能的:使用镜头从地图中获取多个结果

import Data.Monoid
import Control.Lens

instance Monoid r => Monoid (Accessor r a) where
  mempty = Accessor mempty
  mappend (Accessor a) (Accessor b) = Accessor $ a <> b

测试:

*Control.Lens Data.Monoid> ('a','b','c','d') ^.. (_1 <> _2 <> _3)
"abc"

“ abc”只是['a','b','c'],所以这就是您想要的。

(更新:现代lens版本默认情况下包括该实例,因此第二个代码片段应该可以直接使用。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在PostgreSQL中将CTE与IN结合在一起

将多行ffmpeg命令结合在一起/用管道/链接在一起

MySQL将两个结果结合在一起?

将两个 javascript 事件结合在一起不起作用

将复杂的SVG文件与paper.js结合在一起

如何将typedef的结构与实例创建结合在一起?

将团购与窗口功能结合在一起?

Flutter Android将Alarmmanager与通知结合在一起

熊猫将字符串与groupby结合在一起

将两个输入字段的结果与JavaScript结合在一起?

Rails将两个数组与哈希结构结合在一起

将非虚拟接口和多级继承结合在一起

正确地将诺言结合在一起

如何使用Elixir将CSS和更少的东西结合在一起?

如何将“最终形式计算”与“最终形式数组”结合在一起

如何将原位转换和复制转换结合在一起?

如何将5个以上的PDF与imagemagick转换结合在一起?

如何将聚合查询与不同联接结合在一起?

MySQL将FULLTEXT与LIKE回退结合在一起

如何将数据框总结为与ID结合在一起的列表?

将两个列表结合在一起

如何将python asyncio与线程结合在一起?

将咖啡和js开发与Gulp结合在一起

将Bootsrap控件与Razor HTML帮助器结合在一起

将两个功能结合在一起

Java将显式锁与同步方法结合在一起

如何将Bash的流程替换与HERE文档结合在一起?

如何将PrettyPrintingJsonGeneratorDecorator和MaskingJsonGeneratorDecorator结合在一起?

SQL将多个表与多个参数结合在一起