utf8-boundaries.tri (790B)
1 !import base as B 2 !import native_math as N 3 !import io as IO 4 !export excessEncode 5 !export excessDecode 6 !export excessWrite 7 !export excessDigest 8 9 zeros 0 tail = tail 10 zeros n tail = B.pair 0 (zeros (N.predecessor n) tail) 11 diverge seed = diverge seed 12 excessEncode seed = IO.io (IO.encodeUTF8 (zeros 1024 (B.pair (diverge seed) (diverge seed)))) 13 excessDecode seed = IO.io (IO.decodeUTF8 0 (zeros 4096 (B.pair (diverge seed) (diverge seed)))) 14 excessWrite path seed = IO.io <| IO.scope (owner : IO.require (IO.openWriter owner path) (writer : 15 IO.writeSome writer (zeros 4096 (B.pair (diverge seed) (diverge seed))))) 16 excessDigest seed = IO.io <| IO.scope (owner : IO.require (IO.openDigest owner "sha256") (digest : 17 IO.updateDigest digest (zeros 4096 (B.pair (diverge seed) (diverge seed)))))