Структура данных для обхода сегментов многоугольника в Haskell?

У меня есть неупорядоченный список горизонтальных / вертикальных сегментов длиной 1, которые составляют один или несколько многоугольников. Теперь мне нужно найти список всех соединенных углов в каждом многоугольнике.

Пример:

[Horizontal (0,0), Vertical (2,0), Horizontal (1,0), Horizontal (2,2), Vertical (2,1)]

представляет такую ​​строку

2         X--X
          |
1         X
          |
0   X--X--X

    0  1  2

Я бы искал углы [(2,0), (2,2)].

В императивных языках я, вероятно, использовал бы (дважды- ) связанные структуры данных и пройти по ним. Я не могу придумать элегантного представления для этого в Haskell. Как бы вы это сделали?

8
задан LennyStackOverflow 10 June 2011 в 16:04
поделиться