lean4-htt/tests/playground/pldi/do1.lean
2020-10-25 09:16:38 -07:00

39 lines
583 B
Text

def getVal : IO Nat :=
IO.rand 0 100
-- set_option trace.Elab.definition true
def g (i : Nat) : StateT Nat IO Nat := do
s ← get;
a ← getVal; -- automatic lift being used
IO.println a;
pure (s+a)
#eval (g 10).run' 1
def h (x : Nat) : IO Nat := do
IO.println x;
pure (x+1)
def tst1 : IO Unit := do
let x := ← h $ (← getVal) + (← getVal);
/-
Syntax sugar for
aux1 ← getVal;
aux2 ← getVal;
aux3 ← h aux1 aux2;
let x := aux3;
-/
IO.println x
#eval tst1
def tst2 : IO Unit := do
if (← h 1) > 0 then
IO.println "gt"
else
IO.println "le"
#eval tst2