tricu

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

costs.scp (1417B)


      1 -- Shared payloads reuse one runtime tree across recursive frames.
      2 consumer shared
      3   []       @ _       => (1, ("Checkpoint", (leaf, ("finish", leaf))))
      4   [x | xs] @ payload => (1, ("Tick", (x, ("sharedRead", (xs, payload)))))
      5 consumer sharedRead
      6   (stem leaf, (_, _)) @ (rest, payload) =>
      7     (2, ("again", (rest, (payload, ("held", payload)))))
      8 consumer held
      9   (stem leaf, (tail, metadata)) @ payload => (0, (stem leaf, ([payload | tail], metadata)))
     10 consumer finish
     11   result @ _ => (0, result)
     12 
     13 -- Each read creates another runtime payload before descending.
     14 consumer distinct
     15   []       @ _    => (1, ("Checkpoint", (leaf, ("finish", leaf))))
     16   [x | xs] @ path => (1, ("ReadBytes", (path, ("loaded", (xs, path)))))
     17 consumer loaded
     18   (stem leaf, (payload, _)) @ (rest, path) =>
     19     (2, ("again", (rest, (path, ("held", payload)))))
     20 
     21 -- Each leaf returns before explicit-state delegation advances the list.
     22 consumer chain
     23   ([], _)                   @ _                   => (1, ("Checkpoint", (leaf, ("finish", leaf))))
     24   ([x | xs], _)             @ (loop, payload)     => (2, ("leaf", (x, (payload, ("chain", (xs, (loop, payload)))))))
     25   (stem leaf, (_, _))       @ (rest, (loop, payload)) => become loop (rest, leaf) @ (loop, payload)
     26 consumer leaf
     27   value @ payload => (1, ("Tick", (value, ("leafEnd", payload))))
     28 consumer leafEnd
     29   (stem leaf, (_, metadata)) @ payload => (0, (stem leaf, (payload, metadata)))