
public abstract class Caf<A> implements Closure<A> {
	A cache;
	boolean calculated=false;

	@Override
	public A get() {
		if (!calculated){
			cache=calc();
			calculated=true;
		}
		return cache;
	}

	abstract A calc();
}
