blob: 07c89bfb46c4cc57d702b1283ebb8b50b50fda3e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package coffee.liz.lambda.eval;
import lombok.RequiredArgsConstructor;
import java.util.function.Supplier;
/**
* A memoizing thunk for lazy evaluation.
*
* @param <T>
* Thunk type
*/
@RequiredArgsConstructor
public final class Thunk<T> implements Supplier<T> {
private final Supplier<T> thinker; // https://www.youtube.com/shorts/Dzksib8YxSY
private T cached = null;
private boolean evaluated = false;
@Override
public T get() {
if (!evaluated) {
cached = thinker.get();
evaluated = true;
}
return cached;
}
}
|