infer (EmptyListExpr _) = undef
infer (TupleExpr _ (e1, e2)) =
infer e1 >>= \et1->infer e2 >>= \et2->pure $ TupleType (et1, et2)
infer (EmptyListExpr _) = undef
infer (TupleExpr _ (e1, e2)) =
infer e1 >>= \et1->infer e2 >>= \et2->pure $ TupleType (et1, et2)