Enquanto ele me explicava o algoritmo, pensei em como seria simples uma versão funcional e acabei escrevendo este código.
isUpper = (flip elem) ['A'..'Z']
stripCamel (x:xs)= stripCamel' xs [x] []
stripCamel' [] [] b = reverse b
stripCamel' [] a@(x:xs) b = stripCamel' [] [] ((reverse a):b)
stripCamel' (x:xs) a b | isUpper x = stripCamel' xs [x] ((reverse a):b)
| otherwise = stripCamel' xs (x:a) b
Sei lá... Parece mais simples! :-)
Um comentário:
Puxa Rafael! Dá até vontade de aprender Haskell diante de tanta elegância.
Postar um comentário