@@ -553,12 +553,22 @@ pPair syn = try (do lchar '('; l <- pExpr syn; op <- pairOp
553 fc <- pfc
553 fc <- pfc
554 r <- pExpr syn; lchar ')';
554 r <- pExpr syn; lchar ')';
555 return (op fc l r))
555 return (op fc l r))
556+ <|> try (do lchar '('; x <- ntuple
556 <|> do lchar '('; ln <- pName; lchar ':'; lty <- pExpr syn;
559 <|> do lchar '('; ln <- pName; lchar ':'; lty <- pExpr syn;
557 reservedOp "**";
560 reservedOp "**";
558 fc <- pfc
561 fc <- pfc
559 r <- pExpr syn; lchar ')';
562 r <- pExpr syn; lchar ')';
560 return (PDPair fc (PRef fc ln) lty r)
563 return (PDPair fc (PRef fc ln) lty r)
565+ ntuple = try (do l <- pExpr syn; fc <- pfc; lchar ','
567+ return (PPair fc l rest))
568+ <|> (do l <- pExpr syn; fc <- pfc; lchar ','
570+ return (PPair fc l r))
562 pairOp = do lchar ','; return PPair
572 pairOp = do lchar ','; return PPair
563 <|> do reservedOp "**"; return (\f x y -> PDPair f x Placeholder y)
573 <|> do reservedOp "**"; return (\f x y -> PDPair f x Placeholder y)