To handle delaborating notations that are functions that can be applied to arguments, extracts the core function application delaborator as a separate function that accepts the number of arguments to process and a delaborator to apply to the "head" of the expression. Defines `withOverApp`, which has the same interface as the combinator of the same name from std4, but it uses this core function application delaborator. Uses `withOverApp` to improve a number of application delaborators, notably projections. This means Mathlib can stop using `pp_dot` for structure fields that have function types. Incidentally fixes `getParamKinds` to specialize default values to use supplied arguments, which impacts how default arguments are delaborated. --------- Co-authored-by: Sebastian Ullrich <sebasti@nullri.ch>
20 lines
438 B
Text
20 lines
438 B
Text
fn.imp : {p : P} → Bar.fn p
|
|
439.lean:18:7-18:12: error: function expected at
|
|
fn.imp
|
|
term has type
|
|
Bar.fn ?m
|
|
439.lean:29:7-29:11: error: function expected at
|
|
fn.imp
|
|
term has type
|
|
Bar.fn ?m
|
|
fn.imp : Bar.fn p
|
|
fn'.imp Bp : Bar.fn p
|
|
439.lean:39:11-39:12: error: application type mismatch
|
|
fn'.imp p
|
|
argument
|
|
p
|
|
has type
|
|
P : Sort u
|
|
but is expected to have type
|
|
Bar.fn ?m : Sort ?u
|
|
fn'.imp (sorryAx (Bar.fn ?m) true) : Bar.fn ?m
|