tricu

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

copy-bytes.scp (676B)


      1 -- The helper owns both external boundaries and returns stage-tagged errors.
      2 consumer entry
      3   source @ (transform, destination) =>
      4     (1, ("ReadBytes", (source, ("resume", (transform, destination)))))
      5 
      6 consumer resume
      7   (stem leaf, (contents, _)) @ (transform, destination) =>
      8     call transform contents as converted in
      9       (1, ("WriteBytes", ((destination, converted), ("written", destination))))
     10   (leaf, (problem, metadata))  @ _ => (0, (leaf, (("read", problem), metadata)))
     11 
     12 consumer written
     13   (stem leaf, (_, _))       @ destination => (0, (stem leaf, (destination, leaf)))
     14   (leaf, (problem, metadata)) @ _           => (0, (leaf, (("write", problem), metadata)))
     15