   return if ctx.shouldDefer()
   terms = _terms call
   op = _operator call
+  return if not all (tea for {tea} in terms)
   call.tea =
     if terms.length is 1
       # terms = join terms, [tea: toConstrained (markOrigin (ctx.freshTypeVariable star), call)]

          deferredExpression()
        else
          # Typing
          if body and not body.tea
            malformed ctx, body, 'Expression failed to type check'
            #throw new Error "Body not typed"
          call.tea =
            if body
              new Constrained (join body.tea.constraints, deferredConstraints),
                withOrigin (typeFn paramTypeVars..., body.tea?.type), call
            else
              (copyOrigin (freshInstance ctx, explicitType), compiledType)
          # """λ#{paramNames.length}(function (#{listOf paramNames}) {
          #   #{compiledWheres}

        else
          ctx.preDeclare name, id: id
    #log "exiting pattern early", pattern, "for", ctx.shouldDefer()
    return {}

  if not matched.tea
    return {}

  # Properly bind types according to the pattern
