Итак, если у меня есть (конечный или бесконечный) список (конечных или бесконечных) списков строк, можно ли отсортировать список по длине сначала, а затем по лексикографическому порядку, исключая дубликаты? Входной образец/вывода будет:В Haskell, как вы можете отсортировать список бесконечных списков строк?
Входной сигнал:
[[ "а", "б", ...], [ "а", "аа", "ааа"], [ "б », "бб", "БББ", ...], ...]
Выход:
[ "а", "б", "аа", "бб", "ааа", "bbb", ...]
Я знаю, что входной список не является допустимым выражением haskell, но предположим, что есть такой вход. Я попытался использовать алгоритм слияния, но он имеет тенденцию висеть на входах, которые я им даю. Может ли кто-нибудь объяснить и показать приличную функцию сортировки, которая может это сделать? Если нет такой функции, можете ли вы объяснить, почему?
Если кто-то не понял, что я имел в виду по порядку сортировки, я имел в виду, что кратчайшие строки сначала сортируются, и если одна или несколько строк имеют одинаковую длину, то они сортируются с использованием оператора <.
Спасибо!
Вы можете гарантировать, что списки входных данных отсортированы как с вашим примером? –