-- ==========================================================--
--
pgThen2 :: (a -> b -> c) -> 
           Parser a -> 
           Parser b -> 
           Parser c

pgThen2 combine p1 p2 env toks
   = case p1 env toks of
     {
       PFail tok1 
         -> PFail tok1 ;
       POk env1 toks1 item1 
         -> case p2 env1 toks1 of
            {
              PFail tok2 
                -> PFail tok2 ;
              POk env2 toks2 item2
                -> POk env2 toks2 (combine item1 item2)
            }
     }
pgThen2 :: (a -> b -> c) -> 
           Parser a -> 
           Parser b -> 
           Parser c
pgThen2 combine p1 p2 env toks
   = case p1 env toks of
     {
       PFail tok1 
         -> PFail tok1 ;
       POk env1 toks1 item1 
         -> case p2 env1 toks1 of
            {
              PFail tok2 
                -> PFail tok2 ;
              POk env2 toks2 item2
                -> POk env2 toks2 (combine item1 item2)
            }
     }
pgThen2 combine p1 p2 env toks
   = case p1 env toks of
     {
       PFail tok1 
         -> PFail tok1 ;
       POk env1 toks1 item1 
         -> case p2 env1 toks1 of
            {
              PFail tok2 
                -> PFail tok2 ;
              POk env2 toks2 item2
                -> POk env2 toks2 (combine item1 item2)
            }
     }