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: | 505 / 1231 |
Version history: | 2 change(s) |
Referenced in: | -