pat :: HParser Pattern
pat = addRange $
    do  
        u <- unaryMinusPat
        ps <- fmap concat $ many $
            do
                o <- do { n <- conop; return (Pattern_Variable noRange n) }
                u' <- unaryMinusPat
                return (o : u')
        return $ \_ -> Pattern_List noRange (u ++ ps)
pat :: HParser Pattern
pat = addRange $
    do  
        u <- unaryMinusPat
        ps <- fmap concat $ many $
            do
                o <- do { n <- conop; return (Pattern_Variable noRange n) }
                u' <- unaryMinusPat
                return (o : u')
        return $ \_ -> Pattern_List noRange (u ++ ps)
pat = addRange $
    do  
        u <- unaryMinusPat
        ps <- fmap concat $ many $
            do
                o <- do { n <- conop; return (Pattern_Variable noRange n) }
                u' <- unaryMinusPat
                return (o : u')
        return $ \_ -> Pattern_List noRange (u ++ ps)