Evaluation Strategies and Termination - Coursera 강의 ppt 번역
2015. 12. 24. 15:45ㆍProgramming/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)는 루프에 빠질 것이다.