Desugared: {- plain CoRec -} Main.foldPair :: for all a, b. (a -> a -> a, b -> b -> b) -> (a, b) -> [(a, b)] -> (a, b) Main.foldPair = /\ a b -> \ fg.122 ab.123 ds.124 -> let fail.125 = (error (a, b)) "\"ds031.hs\", line 4: pattern-matching failure [function binding]\n"S in let fail.141 = case fg.122 of { MkTuple2 f.126 g.127 -> case ds.124 of { (:) ds.128 abs.129 -> case ds.128 of { MkTuple2 a.130 b.131 -> let ab.132 = ab.123 in let fg.133 = fg.122 in let ds.134 = ((Main.foldPair a) b) fg.133 ab.132 abs.129 in let u.137 = case ds.134 of { MkTuple2 u.135 v.136 -> u.135 } in let v.140 = case ds.134 of { MkTuple2 u.138 v.139 -> v.139 } in MkTuple2! a b (f.126 a.130 u.137) (g.127 b.131 v.140) } _ -> fail.125 } } in case ds.124 of { Nil -> ab.123 _ -> fail.141 } {- end plain CoRec -}