@@ -553,12 +553,22 @@ pPair syn = try (do lchar '('; l <- pExpr syn; op <- pairOp
553553 fc <- pfc
554554 r <- pExpr syn; lchar ')';
555555 return (op fc l r))
556+ <|> try (do lchar '('; x <- ntuple
557+ lchar ')'
558+ return x)
556559 <|> do lchar '('; ln <- pName; lchar ':'; lty <- pExpr syn;
557560 reservedOp "**";
558561 fc <- pfc
559562 r <- pExpr syn; lchar ')';
560563 return (PDPair fc (PRef fc ln) lty r)
561564 where
565+ ntuple = try (do l <- pExpr syn; fc <- pfc; lchar ','
566+ rest <- ntuple
567+ return (PPair fc l rest))
568+ <|> (do l <- pExpr syn; fc <- pfc; lchar ','
569+ r <- pExpr syn
570+ return (PPair fc l r))
571+
562572 pairOp = do lchar ','; return PPair
563573 <|> do reservedOp "**"; return (\f x y -> PDPair f x Placeholder y)
564574