如果您使用的容器是以下实例的容器FunctorWithIndex
那么你可以简单地使用imap (,)
:
> imap (,) "abc"
[(0,'a'),(1,'b'),(2,'c')]
但如果索引不是这个位置,那么这将不起作用:
> 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
use iover traversed
(这与imapOf
但这已被弃用):
> iover traversed (,) "abc"
[(0,'a'),(1,'b'),(2,'c')]
> iover traversed (,) m
fromList [('a',(0,"foo")),('b',(1,"bar")),('c',(2,"foobar"))]