Я пишу мелкие функции, чтобы нарезать строку в пакетах заданной длины, но я новичок в Haskell, и я думаю, что мог бы упростить свои функции. Вот они:Упрощение функций Haskell
packetAux _ [] = []
packetAux 0 ls = []
packetAux n [email protected](x:xs) = if n > (length l) then [] else x : packetAux (n - 1) xs
packet _ [] = []
packet 0 l = []
packet n [email protected](x:xs) = [x | x <- ((packetAux n l) : (packet n xs)), x /= ""]
Ex: пакет 2 "12345" дает [ "12", "23", "34", "45"]
Как я могу избежать 1) повторы в packetAux и пакет 2) фильтрация результата в пакете с x/= ""?
'[х] ++ 'так же, как' х: '. – chaosmasttter
Спасибо за улучшение! – user3166747