У меня есть структура вложенного списка произвольной длины с глубиной три.Первый уровень имеет произвольную длину, как и второй уровень, но третий уровень гарантированно будет иметь одинаковую длину по всему объекту.Примером такой структуры может быть '(((A B) (C D)) ((E F) (G H)) ((I J)))
.
Я пытаюсь написать функцию, которая применила бы другую функцию на различных уровнях структуры (извините, я недействительно знаю, как это выразить).Пример отображения функции в структуре примера будет в следующем порядке:
f A C = AC, f B D = BD, f E G = EG, f F H = FH, f I = I, f J = J
,
, что дает
'((AC BD) (EG FH) (I J))
, но воображаетсячто третий уровень списка содержит гораздо больше элементов (скажем, около 32 000 в окончательной версии).
По сути, то, что я пытаюсь сделать, будет выражаться в Haskell как что-то вроде f . transpose
.Я знаю, что мне нужно что-то вроде (map car (map flatten (car ...)))
, чтобы получить первую часть первого раздела, но после этого я действительно потерял здесь логику.Извините, если это действительно запутанный, плохо объясненный вопрос.Я просто действительно потерян.
Как бы я применил эту функцию ко всей структуре таким образом?