@Kha This one required a bunch of manual fixes. The main issue is that
before we added the string interpolation feature, we created
`MessageData`s using `++` and coercions. For example, given
`(e : Expr)`, we would write
```
let msg : MessageData := "type: " ++ e
```
and rely on the coercions `String -> MessageData` and
`Expr -> MessageData`, and the instance `Append MessageData`.
However, heterogeneous operators "block" the expected type propagation downwards.
This kind of code is obsolete now since we can write a more compact
version using string interpolation
```
let msg := m!"type: {e}"
```
12 lines
632 B
Text
12 lines
632 B
Text
autoBoundImplicits2.lean:9:0: error: invalid auto implicit argument 'b', it depends on explicitly provided argument 'n'
|
||
g1 : ?m → ?m
|
||
autoBoundImplicits2.lean:30:17: error: unknown universe level 'u'
|
||
autoBoundImplicits2.lean:30:37: error: type expected
|
||
failed to synthesize instance
|
||
CoeSort (sorryAx (Sort _)) ?m
|
||
autoBoundImplicits2.lean:33:17: error: unknown universe level 'β'
|
||
autoBoundImplicits2.lean:33:90: error: type expected
|
||
failed to synthesize instance
|
||
CoeSort (sorryAx (Sort _)) ?m
|
||
def h1.{u} : {m : Type u → Type u} → {α : Type u} → m α → m α :=
|
||
fun {m : Type u → Type u} {α : Type u} (a : m α) => a
|