Как я могу эффективно реализовать структуру данных списка, в которой у меня может быть 2 представления для начала и конца списка, которые всегда указывают на заголовок хвоста списка без дорогих вызовов для обращения.
то есть:
start x = []
end x = reverse start -- []
start1 = [1,2,3] ++ start
end start1 -- [3,2,1]
end должен быть в состоянии сделать это, не вызывая 'reverse', а просто просматривая данный список с точки зрения того, что список автоматически переворачивается. То же самое должно произойти, если я создаю новые списки от конкатенаций до запуска.