scala/functional programming

1.4 조건과 값 정의

wefree 2024. 4. 4. 19:47

Short circuit evaluation

표현식을 평가하지 않아도 결과를 알 수 있는 것을 단락평가(short circuit evaluation) 이라고 한다. 다음 예를 보자.

false && e  // false (e 의 평가와 관계 없이)
true || e   // true (e의 평과와 관계 없이)

 

 

Value definitions

def loop: Boolean = loop

val x = loop  // infinite loop
def x = loop  // OK

 

다음 function 을 if 를 사용해 구현해 보자.

and(x, y) == x && y

 

  • call by value 구현
def and(x: Boolean, y: Boolean): Boolean =
  if x then y else false

def loop: Boolean = loop

and(false, loop) // infinite loop

 

  • call by name 구현
def and(x: Boolean, y: => Boolean): Boolean =
  if x then y else false

def loop: Boolean = loop

and(false, loop) // false