Lazy Expressions
Lazy Expressions (지연 식)
게으른 표현이 필요한 순간이 있어요. 값을 만들 때가 아니라, 진짜 그 값이 필요해지는 그 순간에만 계산하도록 미루는 거예요. 성능을 끌어올리고 싶을 때 아주 유용한 기법이에요.
- 출처: Lazy Expressions - F# Language Reference (Microsoft Learn, F# 공식 문서)
본문
지연 식(Lazy Expressions) 은 즉시 평가되지 않고, 결과가 필요해지는 시점에 비로소 평가되는 식이에요. 이렇게 하면 코드 성능을 개선하는 데 도움이 될 수 있어요.
구문 (Syntax)
let identifier = lazy ( expression )
설명 (Remarks)
위 구문에서 expression은 결과가 요구될 때만 평가되는 코드이고, identifier는 그 결과를 저장하는 값이에요. 값의 형식은 Lazy<'T> 인데, 실제 'T에 들어가는 형식은 expression의 결과로부터 결정돼요.
지연 식은 결과가 필요한 상황에서만 식의 실행을 제한해서 성능을 개선할 수 있게 해줘요.
지연된 식을 실제로 실행하려면 Force 메서드를 호출해요. Force는 실행을 단 한 번만 수행해요. 이후에 다시 Force를 호출하면 같은 결과를 반환할 뿐, 코드가 다시 실행되지는 않아요.
다음 코드는 지연 식과 Force의 사용 방법을 보여줘요. 여기서 result의 형식은 Lazy<int> 이고, Force 메서드는 int를 반환해요.
let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())
지연 평가(lazy evaluation)는 Lazy 형식이 아니라도 시퀀스(sequences)에서도 사용돼요. 자세한 내용은 Sequences를 참고하세요.
포맷팅 (Formatting)
여러 줄로 이루어진 지연 식에서는 여는 괄호를 lazy 키워드와 같은 줄에 두고, 식 본문은 한 단계 들여써요.
let expensiveCalculation =
lazy (
let step1 = performStep1()
let step2 = performStep2 step1
step2 * 2
)
지연 식 포맷팅에 대한 더 자세한 내용은 F# formatting guide를 확인해요.