zig-digest.tri (1002B)
1 !import io_v2 as IO 2 !export hash 3 !export lifecycle 4 !export unsupported 5 !export transferred 6 7 hash bytes = IO.io <| IO.scope (owner : do IO.require 8 digest <- IO.openDigest owner "sha256" 9 IO.updateDigest digest bytes 10 IO.require (IO.finishDigest digest) IO.pure) 11 lifecycle = IO.io <| IO.scope (owner : do IO.require 12 digest <- IO.openDigest owner "sha256" 13 value <- IO.finishDigest digest 14 IO.bind (IO.finishDigest digest) (again : 15 IO.bind (IO.updateDigest digest [0]) (update : 16 IO.pure [value again update]))) 17 unsupported algorithm = IO.io <| IO.scope (owner : IO.openDigest owner algorithm) 18 child [digest] = do IO.require 19 IO.updateDigest digest [97 98 99] 20 IO.require (IO.finishDigest digest) IO.pure 21 child _ = IO.fail "invalid transfer" 22 transferred = IO.io <| IO.scope (owner : do IO.require 23 digest <- IO.openDigest owner "sha256" 24 spawned <- IO.spawn 0 1 [digest] child 25 case spawned of 26 [task ticket] = IO.require (IO.join ticket) IO.pure 27 _ = IO.fail "invalid spawn")