terça-feira, 17 de novembro de 2009

Camel case stripper

Estava conversando com o Chico e ele me falou da implementação do camel case stripper que ele fez em Smalltalk.

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:

chicoary disse...

Puxa Rafael! Dá até vontade de aprender Haskell diante de tanta elegância.

Postagens populares