func add4Inside(_ numOpt: Int?): Int? {
  numOpt.map { $0 + 4 }
}

func add4Inside(_ nums: [Int]): [Int] {
  nums.map { $0 + 4 }
}

func add4Inside(_ numTask: Task<Int, Error>): Task<Int, Error> {
  Task {
    let value = await numTask.value
    return value + 4
  }
}

func add4Inside(_ numResult: Result<Int, Error>) -> Result<Int, Error> {
  numResult.map { $0 + 4 }
}

func main() {
  let nums: [Int] = [1,2,3,4]
  let opt: Int? = 4
  let task: Task<Int, Error> = Task { 4 }
  let result: Result<Int, Error> = .success(10)

  add4Inside(nums) //> [5,6,7,8]
  add4Inside(opt) //> Optional(8)
  add4Inside(task) //> Task(8)
  add4Inside(result) //> Result.Success(14)
}