+-- |> parseWWWFormURLEncoded "aaa=bbb&ccc=ddd"
+-- > ==> [("aaa", "bbb"), ("ccc", "ddd")]
+parseWWWFormURLEncoded ∷ String → [(String, String)]
+parseWWWFormURLEncoded src
+ | src == "" = []
+ | otherwise = do pairStr <- splitBy (\ c → c == ';' || c == '&') src
+ let (key, value) = break (== '=') pairStr
+ return ( unEscapeString key
+ , unEscapeString $ case value of
+ ('=':val) → val
+ val → val
+ )