aboutsummaryrefslogtreecommitdiff
path: root/devel/p5-constant-defer/pkg-descr
blob: 4e1179f092dd569735176d3099960a2ba2c9c6d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
constant::defer creates a subroutine which on the first call runs given code to
calculate its value, and on any subsequent calls just returns that value, like a
constant. The value code is discarded once run, allowing it to be garbage
collected.

Deferring a calculation is good if it might take a lot of work or produce a big
result but is only needed sometimes or only well into a program run. If it's
never needed then the value code never runs.

A deferred constant is generally not inlined or folded (see "Constant Folding"
in perlop) since it's not a single scalar value. In the current implementation a
deferred constant becomes a plain constant after the first use, so may inline
etc in code compiled after that (see "IMPLEMENTATION" below).

WWW: https://metacpan.org/release/constant-defer