Для людей с подозрительным умом это не домашняя работа, а просто любопытная.
При условии ограниченного алфавита, возможно ли составить список бесконечно длинных слов из алфавита в обратном лексографическом порядке?
то есть с учетом алфавита "ab"
возможно ли построить список:
["aaaaaa...", "baaaaa...", "abaaaa...", "bbaaaa...", "aabaaa...", ...]
, где ...
представляет список (и список списков), простирающийся до бесконечностидлина.
Наивная попытка:
counters alphabet = [c:ounter | ounter <- counters alphabet, c <- alphabet]
, но она не работает, поскольку она остается рекурсивной.
Конечно, с рабочей версией, если выЕсли вы попытаетесь напечатать результат, вы увидите только первый печатный элемент в виде бесконечного списка первого элемента из алфавита.Тем не менее, вы должны быть в состоянии сделать это:
mapM_ (print . take 2) . take 4 . counters $ "ab"
и увидеть вывод:
aa
ba
ab
bb