【发布时间】:2015-07-08 09:04:38
【问题描述】:
我想要一个接收列表并索引所有内容的函数:indexed :: [a] -> [(Int, a)]。或者返回的值可以是任何 Monad,只要它包含原始列表的索引值。
我认为我需要 StateT 在处理每个元素时临时记住和增加索引号,但我不熟悉 Monad 转换器,我需要一些帮助来编写函数。
我相信它看起来会像这样(这肯定行不通):
indexed ns = do
n <- ns
i <- get
put (i + 1)
return (i, n)
你会怎么写?
【问题讨论】: