Download Jar. Libraryless. Click here for Pure Java version (1845L/13K).
!7 sclass Calculation { O f; Calculation deferredTo; OKOrError result; *() {} *(O *f) {} void calc() { if (done()) ret; try { result = OKOrError_ok(callF(f)); } catch e { Throwable inner = getInnerException(e); if (inner instanceof DeferCalculation) deferredTo = inner/DeferCalculation.calculation(); else result = OKOrError_error(e); } } bool done() { ret result != null || deferredTo != null; } toString { S s = "Calculation of " + f + "."; if (deferredTo != null) s += " Deferred to: " + deferredTo; else if (result != null) s += " " + result; else s += " Not run"; ret s; } Calculation resolve() { Calculation c = this; while (c.deferredTo != null) c = c.deferredTo; ret c; } } p { Calculation c = new Calculation(f now); print(c); c.calc(); print(c); c = new Calculation(f fail); c.calc(); print(c); c = new Calculation(r { throw DeferCalculation(Calculation(f now)) }); print(c); c.calc(); print(c); c = c.resolve(); c.calc(); print(c); }
Began life as a copy of #1012583
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1012585 | 
| Snippet name: | Reified Calculation v2 [OK] | 
| Eternal ID of this version: | #1012585/3 | 
| Text MD5: | 7f158e8e503df1527bed136d1d8f36cd | 
| Transpilation MD5: | 720a6987f121845f022041a94aa3fcff | 
| Author: | stefan | 
| Category: | javax | 
| Type: | JavaX source code (desktop) | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2017-12-07 14:37:27 | 
| Source code size: | 1164 bytes / 58 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 788 / 1807 | 
| Version history: | 2 change(s) | 
| Referenced in: | [show references] |