+
+(* the CoreType argument is used only when going back from Weak to Core; it lets us dodge a possibly-failing type calculation *)
+| WEBrak : WeakTypeVar -> WeakExpr -> CoreType -> WeakExpr
+| WEEsc : WeakTypeVar -> WeakExpr -> CoreType -> WeakExpr
+
+(* note that HaskWeak "Case" does not bind a variable; coreExprToWeakExpr adds a let-binder *)