class Dry::Types::Sum

def try(input, &block)

def try(input, &block)
  result = left.try(input) do
    right.try(input)
  end
  return result if result.success?
  if block
    yield(result)
  else
    result
  end
end