parsePrologPat :: (Data a, Lift a) => ParsecT [Char] () Identity a -> String -> String -> Q Pat
parsePrologPat parser name str = do
   case parse (whitespace >> parser <* eof) ("(Prolog " ++ name ++ " pattern)") str of
      Right x -> viewP [e| (== $(lift x)) |] [p| True |]
parsePrologPat :: (Data a, Lift a) => ParsecT [Char] () Identity a -> String -> String -> Q Pat
parsePrologPat parser name str = do
   case parse (whitespace >> parser <* eof) ("(Prolog " ++ name ++ " pattern)") str of
      Right x -> viewP [e| (== $(lift x)) |] [p| True |]
parsePrologPat parser name str = do
   case parse (whitespace >> parser <* eof) ("(Prolog " ++ name ++ " pattern)") str of
      Right x -> viewP [e| (== $(lift x)) |] [p| True |]