+ -- The type might contain foralls (eg. for dummy type arguments,
+ -- referring to 'Ptr a' is legal).
+ | Just (tyvar, rest) <- splitForAllTy_maybe result_ty
+ = let
+ (maybe_ty, wrapper) = resultWrapper rest
+ in
+ (maybe_ty, \e -> Lam tyvar (wrapper e))
+