tricu

A lazy functional language based on Tree Calculus
Log | Files | Refs | README | LICENSE

indexed-read.tri (745B)


      1 !import io as IO
      2 !export read
      3 !export probe
      4 
      5 -- No store layout or publication policy is native. Supply an exact byte frame,
      6 -- expected indexed-object digest, private-spool directory, and disk-size budget.
      7 read path directory limit size digest = IO.io <| IO.scope (owner : do IO.require
      8   reader <- IO.openReader owner path
      9   IO.readIndexedTree reader directory limit size digest)
     10 
     11 -- Preserve ordinary failures and observe consumption without retrying a frame.
     12 probe path directory limit size digest = IO.io <| IO.scope (owner : do IO.require
     13   reader <- IO.openReader owner path
     14   IO.bind (IO.readIndexedTree reader directory limit size digest) (decoded : do IO.require
     15     position <- IO.filePosition reader
     16     IO.pure [decoded position]))