首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Haskell中的镜头复制Python的枚举?

如何使用Haskell中的镜头复制Python的枚举?
EN

Stack Overflow用户
提问于 2015-03-18 06:47:07
回答 3查看 295关注 0票数 4

Python上的枚举可以写成zip [0..]。我看了Control.Lens.Traversal和Control.Lens.Indexed,但我不知道如何使用镜头将其推广到任何合理的容器(我不愿说“可遍历”)。

我猜itraverseitraverseOf是关键。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-18 07:42:20

如果使用的容器是FunctorWithIndex的实例,那么只需使用imap (,)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> imap (,) "abc"
[(0,'a'),(1,'b'),(2,'c')]

但是,如果指数不是这个位置,这是行不通的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> let m = Map.fromList [('a', "foo"), ('b', "bar"), ('c', "foobar")])
> imap (,) m
fromList [('a',('a',"foo")),('b',('b',"bar")),('c',('c',"foobar"))]

相反,您可以使用traversed,它是一个索引遍历,其中索引是元素显示的顺序。这可以用于任何Traversable。不要使用imap,而是使用iover traversed (这与imapOf相同,但已被废弃):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> iover traversed (,) "abc"
[(0,'a'),(1,'b'),(2,'c')]

> iover traversed (,) m
fromList [('a',(0,"foo")),('b',(1,"bar")),('c',(2,"foobar"))]
票数 8
EN

Stack Overflow用户

发布于 2015-03-18 07:00:35

一种解决方案是将State monad与traverse一起使用,因为它也是Applicative

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enumerate :: (Integral n, Traversable t) => t a -> t (n, a)
enumerate t = evalState (traverse go t) 0
    where
        go a = do
            i <- get
            modify (+1)
            return (i, a)
票数 6
EN

Stack Overflow用户

发布于 2015-03-18 07:41:52

您忽略了Applicativeitraverse上的上下文。你需要一些东西来配合它。但有些东西可能会很无聊,比如Identity

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
imap f = runIdentity . itraverse (\i a -> return (f i a))

然后你得到了你想要的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> imap (,) [1,2,3]
[(0,1),(1,2),(2,3)]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29125149

复制
相关文章
[android] 手机卫士欢迎细节和主界面
<item name="android:windowNoTitle">true</item>
唯一Chat
2019/09/10
5090
用户登录界面[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166531.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
3.3K0
用户登录界面[通俗易懂]
CSS——用户界面
用户界面(User Interface)属性是一些与用户界面特性相关的CSS属性。
Html5知典
2019/11/26
7240
SAP RETAIL 商品主数据POS视图
SAP RETAIL 商品主数据POS视图 SAP RETAIL系统上商品主数据有一个view叫做POS的,如下图示: 这个视图有啥用? 笔者检查了该视图里的字段,认为对业务起控制作用的字段主要有如下
SAP虾客
2021/11/05
4980
图形用户界面入门
EasyGUI 是 Python 中一个非常简单的 GUI 编程模块,不同于其他的 GUI 生成器,它不是事件驱动的。相反,所有的 GUI 交互都是通过简地函数调用就可以实现。
清菡
2020/12/02
9410
图形用户界面入门
[javaSE] GUI(图形用户界面)
调用Frame对象的setSize()方法,设置尺寸,参数:int的宽度,int的高度
唯一Chat
2019/09/10
9040
[javaSE] GUI(图形用户界面)
用户界面开发基础
Activity是Android中最核心的应用程序组件,也是大多数程序必须使用的用于显示界面的组件。
小小工匠
2021/08/16
1.8K0
模拟用户登录界面
上网过程中,我们常常会有一个账号的登录过程,本篇博客通过模拟用户登录界面以及登录过程过多时,引发的账号锁定现象。形象地变现出用户登录的详细过程。
算法与编程之美
2021/12/21
3.3K0
CSS用户界面样式
所谓的界面样式, 就是更改一些用户操作样式, 比如 更改用户的鼠标样式, 表单轮廓以及 防止表单域拖拽等。但是比如滚动条的样式改动受到了很多浏览器的抵制,因此我们就放弃了。
星辰_大海
2020/09/30
1.8K0
ABAP随笔-物料主数据界面增强
大家新年好,这个新年格外的不一样。在家远程办公的我忙着项目上的事,加上过年就一直忘记写随笔了。果然是一个佛系得运营,今天来个长一点得文章哈。
Tab Zhu
2022/06/23
1K0
ABAP随笔-物料主数据界面增强
electron仿制qq(2) 主界面制作
制作从头开始 最后会将写好的组件放到一起的! 之前写了好几天的纯css 有点累 本章中将使用sass 如果代码太长 会分两个或多个章节写 代码中会有详细的注释 以便于大家阅读and理解 界面可能会有部分偏差 比较是仿制的
李昊天
2019/05/26
1.5K0
postman系列(一):主界面模块解析
在做接口测试时经常会用到postman,但是一直没有总结过,太过零散,这次找了一些好的资料,结合自己平时所用到的功能,总结一波
冰霜
2022/03/15
8220
postman系列(一):主界面模块解析
后台管理系统界面_用户界面管理系统
3. FreshUI – Premium Web App and Admin Template
全栈程序员站长
2022/10/01
4.5K0
后台管理系统界面_用户界面管理系统
ectron仿制qq(3) 主界面制作(2)
这里解释下 -顶部header的高度(140) 底部的高度(40) 写法很多 不过达到效果就行了 在窗口拉伸的时候可以自适应高度
李昊天
2019/05/26
7240
Android用户界面开发概述
相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路。 Android应用开发的一项内容就是用户界面的开发。Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面。 一、界面UI元素介绍 Android应用是运行于手机系统上的程序,这种程序给用户的第一印象就是用户界面。接下
分享达人秀
2018/02/02
2.5K0
Android用户界面开发概述
Elasticsearch Cerebro 用户界面介绍
Cerebro 是查看分片分配和最有用的界面之一通过图形界面执行常见的索引操作。 完全开放源,并且它允许您添加用户,密码或 LDAP 身份验证问网络界面。Cerebro 是对先前插件的部分重写,并且可以作为自运行工具使用应用程序服务器,基于 Scala 的Play 框架。
HLee
2020/12/29
1K0
Elasticsearch Cerebro 用户界面介绍
MySQL存储过程,视图,用户管理
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
石的三次方
2021/01/05
9380
点击加载更多

相似问题

JHipster主细节用户界面

10

角用户界面-路由器继承视图

21

角用户界面路由器嵌套视图

14

角用户界面路由器生成两个用户界面视图

10

角用户界面路由器嵌套用户界面视图显示空白

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文