lean4-htt/tests/lean/run/thunkTaskCasesOn.lean
Cameron Zwarich d41b9f004a
feat: support casesOn for Thunk and Task (#8923)
This PR implements `casesOn` for `Thunk` and `Task`. Since these are
builtin types, this needs to be special-cased in `toMono`.

Fixes #8659.
2025-06-22 05:24:33 +00:00

39 lines
715 B
Text

def thunk1 : Thunk String := "foo"
/-- info: "foo" -/
#guard_msgs in
#eval let ⟨fn⟩ := thunk1; fn ()
/-- info: "foo" -/
#guard_msgs in
#eval (thunk1.casesOn id () : String)
def thunk2 : Thunk String := "bar"
/-- info: "bar" -/
#guard_msgs in
#eval (thunk2.casesOn id () : String)
/-- info: "bar" -/
#guard_msgs in
#eval let ⟨fn⟩ := thunk2; fn ()
def task1 : Task String := Task.pure "foo"
/-- info: "foo" -/
#guard_msgs in
#eval let ⟨v⟩ := task1; v
/-- info: "foo" -/
#guard_msgs in
#eval (task1.casesOn id : String)
def task2 : Task String := Task.pure "bar"
/-- info: "bar" -/
#guard_msgs in
#eval (task2.casesOn id : String)
/-- info: "bar" -/
#guard_msgs in
#eval let ⟨v⟩ := task2; v