tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

consumer_effect_compose.scp (1612B)


      1 -- Return Result, request, and invoke are ordinary command trees.
      2 -- The dispatcher owns return frames; receivers retain application state.
      3 consumer outer
      4   _ @ retained => (2, ("inner", (1, (11, ("outerSecond", retained)))))
      5 
      6 consumer outerSecond
      7   (stem leaf, (first, _)) @ retained =>
      8     (2, ("inner", (2, (22, ("outerEnd", (first, retained))))))
      9   (leaf, (problem, metadata)) @ _ => (0, (leaf, (problem, metadata)))
     10 
     11 consumer outerEnd
     12   (leaf, (problem, metadata)) @ (first, retained) => (0, (stem leaf, ((first, (retained, problem)), leaf)))
     13   (stem leaf, (second, _)) @ (first, retained) => (0, (stem leaf, ((first, (retained, second)), leaf)))
     14 
     15 consumer inner
     16   label @ seed => (1, ("One", ((label, seed), ("innerSecond", (label, seed)))))
     17 
     18 consumer innerSecond
     19   (stem leaf, (value, _)) @ retained => (1, ("Two", (value, ("innerEnd", retained))))
     20   (leaf, (problem, metadata)) @ _ => (0, (leaf, (problem, metadata)))
     21 
     22 consumer innerEnd
     23   (stem leaf, (value, _)) @ retained => (0, (stem leaf, ((value, retained), leaf)))
     24   (leaf, (problem, metadata)) @ _ => (0, (leaf, (problem, metadata)))
     25 
     26 -- Driver/worker failures terminate before application recovery.
     27 consumer unresolved
     28   _ @ _ => (1, ("One", (7, ("absent", leaf))))
     29 
     30 consumer nestedWorkerFailure
     31   _ @ retained => (2, ("workerFailure", (7, (leaf, ("outerEnd", (leaf, retained))))))
     32 
     33 consumer workerFailure
     34   leaf @ _ => (0, (stem leaf, (leaf, leaf)))
     35 
     36 consumer selected
     37   _ @ _ => choose leaf (1, ("One", (7, ("absent", leaf)))) (0, (stem leaf, (42, leaf)))
     38 
     39 consumer malformed
     40   _ @ _ => stem leaf
     41 
     42 consumer badOutcome
     43   _ @ _ => (0, (3, leaf))