[Haskell] Работа со списками
От: nikov США http://www.linkedin.com/in/nikov
Дата: 13.05.09 17:37
Оценка: 5 (1)
В качестве тренировки написал такие функции (получение всех перестановок и всех подстрок строки):
permutations :: [a] -> [[a]]
permutations [] = [[]]
permutations xs = [x:p | (x,n) <- zip xs [0..], p <- let (l,r) = splitAt n xs in permutations $ l ++ tail r]

subsequences :: [a] -> [[a]]
subsequences = ([]:).(concatMap (tail.inits)).tails


Как их можно переписать короче/элегантнее/понятнее/эффективнее? Конечно, не используя стандартных permutations и subsequences.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.