

def f (x : Nat) :=
if x = 0 then panic! "unexpected zero"
else x - 1

#eval f 0

#eval f 10

def g (x : Nat) :=
if x = 0 then unreachable!
else x - 1

#eval g 0

def h (x : Nat) :=
assert! x != 0;
x - 1

#eval h 1
#eval h 0

def f2 (x : Nat) :=
dbgTrace! "f2, x: {x}";
x + 1

#eval f2 10

def g2 (x : Nat) : IO Nat := do
IO.println "g2 started";
pure (x + 1)

#eval g2 10
