Evaluation Strategies and Termination - Coursera 강의 ppt 번역

2015. 12. 24. 15:45Programming/Scala

Call-by-name, Call-by-value and termination


지난 시간에 call-by-name과 call-by-value 전략에 대해 간략히 살펴보았다.

그런데 만약 종료 조건이 보장이 안된다면 어떻게 할까?


아래의 명제는 반드시 보장이 된다.


- 만약 call-by-value가 종료된다면, call-by-name 역시 종료가 된다.


Scala's evaluation strategy


Scala는 일반적으로 call-by-value를 실행한다.

그러나 만약 함수 파라미터의 타입이 =>로 시작한다면 이는 call-by-name을 실행하겠다는 의미가 된다.

ex)

def constOne(x: Int, y:=> Int) = 1


constOne(1 + 2, loop) Vs constOne(loop, 1 + 2)

constOne(1 + 2, loop)는 정상 동작 할 것이고, constOne(loop, 1 + 2)는 루프에 빠질 것이다.