main :: IO ()
main = getContents >>=
    mapM_ (\ (k, v) ->
         putStrLn ""
      >> putStrLn (k ++ " :: String")
      >> putStrLn (k ++ " = \"" ++ v ++ "\""))
  . Map.toList
  . Map.fromList
  . map (\ s -> (camelCase False s ++ "S", s))
  . filter (not . null)
  . map (takeWhile $ \ c -> isAlpha c || elem c "-_?")
  . lines
main :: IO ()
main = getContents >>=
    mapM_ (\ (k, v) ->
         putStrLn ""
      >> putStrLn (k ++ " :: String")
      >> putStrLn (k ++ " = \"" ++ v ++ "\""))
  . Map.toList
  . Map.fromList
  . map (\ s -> (camelCase False s ++ "S", s))
  . filter (not . null)
  . map (takeWhile $ \ c -> isAlpha c || elem c "-_?")
  . lines
main = getContents >>=
    mapM_ (\ (k, v) ->
         putStrLn ""
      >> putStrLn (k ++ " :: String")
      >> putStrLn (k ++ " = \"" ++ v ++ "\""))
  . Map.toList
  . Map.fromList
  . map (\ s -> (camelCase False s ++ "S", s))
  . filter (not . null)
  . map (takeWhile $ \ c -> isAlpha c || elem c "-_?")
  . lines