Вдохновленный недавним вопросом о 2d сетках в Haskell, мне интересно, можно ли создать двумерную молнию для отслеживания позиции в списке списков. Одномерная молния в списке позволяет нам эффективно перемещаться локально в большом списке (обычный пример - текстовый редактор). Но давайте скажем, что у нас есть второе измерение:
grid =
[[ 1, 2, 3, 4, 5]
,[ 6, 7, 8, 9,10]
,[11,12,13,14,15]
,[16,17,18,19,20]
,[21,22,23,24,25]]
Можем ли мы создать какую-то структуру данных на молнии, чтобы эффективно перемещать не только левый и правый, но вверх и вниз в сетке здесь? Если да, то что, если мы заменим список списков бесконечным списком бесконечных списков, можем ли мы еще получить эффективное движение?