Что представляет собой хороший способ представления типа LoL a
, являющегося списком списков
of... of a
? Уровень гнездования является произвольным, но однородным по всем
элементы внешнего списка.
Случай, который я имею в виду, - это применить группировку на членах список, а затем применить следующую группировку для каждой подгруппы и т.д. Это пока не известно, сколько групп придется применять. Следовательно:
rGroupBy :: [(a -> a -> Bool)] -> [a] -> [...[a]...]
Дополнительные точки коричневого цвета для сигнатуры типа rGroupBy
; -)
Пример:
Предположим, что deweyGroup i
группирует элементы на основе i-го числа
rGroupBy [deweyGroup 1, deweyGroup 2]
["1.1", "1.2.1", "1.2.2", "2.1", "2.2", "3"]
дает:
[ [ [ "1.1" ], [ "1.2.1", "1.2.2" ] ],
[ [ "2.1" ], [ "2.2" ] ],
[ [ "3" ] ]
]
Postscript
Через день у нас есть 4 отличных и дополнительных решения. Я очень доволен ответами; спасибо всем.