module Recursion (snake2camel) where
import Data.Char (toUpper)
import Data.Foldable (Foldable (foldr'))
snake2camel :: String -> String
snake2camel :: String -> String
snake2camel = (Char -> String -> String) -> String -> String -> String
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr' Char -> String -> String
f String
""
where
f :: Char -> String -> String
f Char
'_' (Char
x:String
xs) = Char -> Char
toUpper Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String
xs
f Char
x String
xs = Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String
xs