This PR avoids a `let` in the elaboration of `forIn`. It was introduced in https://github.com/leanprover/lean4/commit/f51328ff112 but nothing seems to break when I simplify the code. This removes an unexpected `let col✝ :=…` from the “Expected type” view in the Info View and from the termination proofs.
79 lines
1.6 KiB
Text
79 lines
1.6 KiB
Text
set_option pp.mvars.anonymous false
|
||
|
||
/--
|
||
error: failed to construct 'ForIn' instance for collection
|
||
?_
|
||
and monad
|
||
Id
|
||
-/
|
||
#guard_msgs in
|
||
example {c} := Id.run do
|
||
for x in c do
|
||
pure ()
|
||
pure ()
|
||
|
||
|
||
/--
|
||
error: don't know how to synthesize implicit argument 'ρ'
|
||
@forIn Id (List ?_) ?_ instForInOfForIn' PUnit Id.instMonad [] PUnit.unit fun x r => do
|
||
pure ()
|
||
pure (ForInStep.yield PUnit.unit)
|
||
context:
|
||
⊢ Type _
|
||
---
|
||
error: failed to infer binder type
|
||
---
|
||
error: don't know how to synthesize implicit argument 'α'
|
||
@List.nil ?_
|
||
context:
|
||
⊢ Type _
|
||
-/
|
||
#guard_msgs in
|
||
example : Unit := Id.run do
|
||
for x in [] do
|
||
pure ()
|
||
pure ()
|
||
|
||
/--
|
||
error: failed to construct `ForIn'` instance for collection
|
||
?_
|
||
and monad
|
||
Id
|
||
-/
|
||
#guard_msgs in
|
||
example {c} := Id.run do
|
||
for h : x in c do
|
||
pure ()
|
||
pure ()
|
||
|
||
/--
|
||
error: don't know how to synthesize implicit argument 'd'
|
||
@forIn' Id (List ?_) ?_ inferInstance List.instForIn'InferInstanceMembership PUnit Id.instMonad [] PUnit.unit
|
||
fun x h r => do
|
||
pure ()
|
||
pure (ForInStep.yield PUnit.unit)
|
||
context:
|
||
⊢ outParam (Membership ?_ (List ?_))
|
||
---
|
||
error: don't know how to synthesize implicit argument 'ρ'
|
||
@forIn' Id (List ?_) ?_ inferInstance List.instForIn'InferInstanceMembership PUnit Id.instMonad [] PUnit.unit
|
||
fun x h r => do
|
||
pure ()
|
||
pure (ForInStep.yield PUnit.unit)
|
||
context:
|
||
⊢ Type _
|
||
---
|
||
error: failed to infer binder type
|
||
---
|
||
error: failed to infer binder type
|
||
---
|
||
error: don't know how to synthesize implicit argument 'α'
|
||
@List.nil ?_
|
||
context:
|
||
⊢ Type _
|
||
-/
|
||
#guard_msgs in
|
||
example : Unit := Id.run do
|
||
for h : x in [] do
|
||
pure ()
|
||
pure ()
|