Вдохновленный недавним вопросом о 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]]
Можем ли мы создать какую-то структуру данных на молнии для эффективного перемещения не только влево и вправо, но и вверх и вниз по сетке? Если да, то что, если мы заменим список списков бесконечным списком бесконечных списков, сможем ли мы получить эффективное перемещение?