lean4-htt/tests/lean/run/doNotation5.lean
Leonardo de Moura d46cb80362 chore: fix tests
2021-03-11 11:35:51 -08:00

27 lines
525 B
Text

abbrev M := ExceptT String $ ExceptT Nat $ StateM Nat
def inc (x : Nat) : M Unit := do
if (← get) >= 100 then
throwThe Nat ((← get) + x)
modify (· + x)
def dec (x : Nat) : M Unit := do
if (← get) - x == 0 then
throw "balance is zero"
modify (· - x)
def f (x y : Nat) : M Nat := do
try
inc x
dec y
get
catch ex : String =>
dbg_trace "string exception {ex}"
pure 1000
catch ex : Nat =>
dbg_trace "nat exception {ex}"
pure ex
#eval (f 10 20).run 1000
#eval (f 10 200).run 10
#eval (f 10 20).run 30