tricu

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

sourceContractMini.tri (649B)


      1 -- An independent tiny Result protocol: checks use only withContract and
      2 -- matchResult, rather than importing the huge base closure into the Zig gate.
      3 err msg rest = (onFail onOk : onFail msg rest)
      4 ok value rest = (onFail onOk : onOk value rest)
      5 matchResult onFail onOk result = result onFail onOk
      6 withContract contract value = contract value
      7 accept value = ok value t
      8 reject value = err "denied" t
      9 replace value = ok 2 t
     10 checked @accept =@replace (value : value)
     11 checkedNamed value@accept =@replace value
     12 both @accept @accept =@replace (a b : a)
     13 first @reject @accept =@replace (a b : a)
     14 second @accept @reject =@replace (a b : a)
     15 main = __EXPR__