File tree Expand file tree Collapse file tree 1 file changed +17
-11
lines changed
Expand file tree Collapse file tree 1 file changed +17
-11
lines changed Original file line number Diff line number Diff line change 99import fj .data .Option ;
1010import fj .data .Validation ;
1111//import fj.data.*;
12- import fj . function . Try0 ;
12+
1313
1414public abstract class P1 <A > implements F0 <A > {
1515
@@ -216,22 +216,28 @@ public P1<A> memo() {
216216 final P1 <A > self = this ;
217217 return new P1 <A >() {
218218 private final Object latch = new Object ();
219- @ SuppressWarnings ({"InstanceVariableMayNotBeInitialized" })
220- private volatile SoftReference <A > v ;
219+ private volatile SoftReference <Option <A >> v = null ;
221220
221+ @ Override
222222 public A _1 () {
223- A a = v != null ? v .get () : null ;
224- if (a == null )
223+ Option < A > o = v != null ? v .get () : null ;
224+ if (o == null ) {
225225 synchronized (latch ) {
226- if (v == null || v .get () == null ) {
227- a = self ._1 ();
228- v = new SoftReference <A >(a );
229- } else {
230- a = v .get ();
226+ o = v != null ? v .get () : null ;
227+ if (o == null ) {
228+ o = Option .some (self ._1 ());
229+ v = new SoftReference <>(o );
231230 }
232231 }
233- return a ;
232+ }
233+ return o .some ();
234+ }
235+
236+ @ Override
237+ public P1 <A > memo () {
238+ return this ;
234239 }
240+
235241 };
236242 }
237243
You can’t perform that action at this time.
0 commit comments