         else
           # Typing
           if body and not body.tea
-            #log body
             throw new Error "Body not typed"
           call.tea =
             if body

    method

instanceDictFor = (ctx, constraint) ->
  {className, type} = constraint
  for {name, type} in (ctx.classNamed className).instances
    # TODO: support lookup of composite types, by traversing left depth-first
    if type.name is type.name
      return validIdentifier name
  throw new Error "no instance for #{printType constraint}"


            type: call.tea
            params: paramNames
            body: (join compiledWheres, [(jsReturn compiledBody)]))
            # (jsCall "λ#{paramNames.length}", [
            #   (jsFunction
            #     name: (ctx.definitionName() if ctx.isAtSimpleDefinition())
            #     params: paramNames
            #     body: (join compiledWheres, [(jsReturn compiledBody)]))])

  # data
  #   listing or
  #     pair
