lean4-htt/tests/lean/run/doNotation5.lean
Leonardo de Moura 9538772c1c chore: do not use string interpolation by default at dbgTrace!
It is nice to be able to write `dbgTrace! x` instead of `dbgTrace! "{x}"`
2020-10-09 20:49:39 -07:00

29 lines
543 B
Text

new_frontend
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 =>
dbgTrace! s!"string exception {ex}"
pure 1000
catch ex : Nat =>
dbgTrace! s!"nat exception {ex}"
pure ex
#eval (f 10 20).run 1000
#eval (f 10 200).run 10
#eval (f 10 20).run 30