previously, `#eval` would happily evaluate expressions that contain `sorry`, either explicitly or because of failing tactics. In conjunction with operations like array access this can lead to the lean process crashing, which isn't particularly great. So how `#eval` will refuse to run code that (transitively) depends on the `sorry` axiom (using the same code as `#print axioms`). If the user really wants to run it, they can use `#eval!`. Closes #1697
28 lines
324 B
Text
28 lines
324 B
Text
def f (x : Nat) : Nat :=
|
|
if h : x > 0 then
|
|
g x + 2
|
|
else
|
|
1
|
|
where
|
|
g : Nat → Nat
|
|
| 0 => 2
|
|
| x => f x * 2
|
|
|
|
#check f
|
|
#check f.g
|
|
|
|
#eval! f 0
|
|
#eval! f.g 0
|
|
|
|
inductive Foo where
|
|
| a | b | c
|
|
deriving Repr
|
|
def h (x : Nat) : Foo :=
|
|
match x with
|
|
| 0 => Foo.a
|
|
| 1 => Foo.b
|
|
| x => h x
|
|
|
|
#check h
|
|
|
|
#eval! h 0
|