Skip to content

Call by value and Call by name

HeatoN edited this page Jan 14, 2015 · 1 revision
def f(a: A, b: => B): C
  • a is Call-by-value, which is evaluating to value before passing it to a function.
  • b is Call-by-name, which is passing it to a function before evaluating

Examples:

Call-by-value

def add(a: Int, b: Int): Int = a + b
add(2 * 2, 3)
=> add(4, 3)
=> 4 + 3
=> 7

Call-by-name

def add(a: => Int, b: => Int): Int = a + b
add(2 * 2, 3 * 3)
=> (2 * 2) + (3 * 3)
=> 4 + 9
=> 13

Clone this wiki locally