Я хочу функцию, которая принимает в списке и индексирует все содержимое: indexed :: [a] -> [(Int, a)]
. Или возвращаемое значение может быть любым Monad, если оно содержит индексированные значения исходного списка.Индексное содержание списка ([a] -> [(Int, a)])
Я думал, что мне понадобится StateT для временного запоминания и числа индексов при обработке каждого элемента, но я не знаком с трансформатором Monad и мне нужна помощь в написании функции.
Я считаю, что это будет выглядеть примерно так (это точно не работает):
indexed ns = do
n <- ns
i <- get
put (i + 1)
return (i, n)
Как бы вы писать?
http://stackoverflow.com/questions/12658443/how-to-decorate-a-tree-in- haskell –