Name the input and output types of a function parameter.

function-type `(Int, Int) -> Int` means a function receives two integers and returns an integer.

Function Types

left
FunctionTypes.kt
Replay: real traced execution (multi-file project)
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
    val combined = operation(left, right)
    return combined
}

fun main() {
    val left = 3
    val right = 2
    val sum = combine(left, right, { a, b ->
        a + b
    })

    println("left=$left")
    println("sum=$sum")
}
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
    val combined = operation(left, right)
    return combined
}

fun main() {
    val left = 1
    val right = 2
    val sum = combine(left, right, { a, b ->
        a + b
    })

    println("left=$left")
    println("sum=$sum")
}
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
    val combined = operation(left, right)
    return combined
}

fun main() {
    val left = 6
    val right = 2
    val sum = combine(left, right, { a, b ->
        a + b
    })

    println("left=$left")
    println("sum=$sum")
}
  1. left ← 3, right ← 2

    6fun main() {7    val left→ 3 = 3 //@left=1, 68    val right→ 2 = 29    val sum = combine(left3, right2, { a, b ->10        a + b11    })
  2. combined ← 5

    1fun combine(left3: Int, right2: Int, operation: (Int, Int) -> Int): Int {2    val combined→ 5 = operation(left3, right2)3    return combined54}
  3. sum ← 5

    8    val right = 29    val sum→ 5 = combine(left3, right2, { a, b ->10        a + b11    })1213    println("left=$left3")14    println("sum=$sum5")15}
    outputleft=3
    sum=5
  1. left ← 1, right ← 2

    6fun main() {7    val left→ 1 = 18    val right→ 2 = 29    val sum = combine(left1, right2, { a, b ->10        a + b11    })
  2. combined ← 3

    1fun combine(left1: Int, right2: Int, operation: (Int, Int) -> Int): Int {2    val combined→ 3 = operation(left1, right2)3    return combined34}
  3. sum ← 3

    8    val right = 29    val sum→ 3 = combine(left1, right2, { a, b ->10        a + b11    })1213    println("left=$left1")14    println("sum=$sum3")15}
    outputleft=1
    sum=3
  1. left ← 6, right ← 2

    6fun main() {7    val left→ 6 = 68    val right→ 2 = 29    val sum = combine(left6, right2, { a, b ->10        a + b11    })
  2. combined ← 8

    1fun combine(left6: Int, right2: Int, operation: (Int, Int) -> Int): Int {2    val combined→ 8 = operation(left6, right2)3    return combined84}
  3. sum ← 8

    8    val right = 29    val sum→ 8 = combine(left6, right2, { a, b ->10        a + b11    })1213    println("left=$left6")14    println("sum=$sum8")15}
    outputleft=6
    sum=8