The class OfNat α n
powers the numeric literal parser. If you write
37 : α
, Lean will attempt to synthesize OfNat α 37
, and will generate
the term (OfNat.ofNat 37 : α)
.
There is a bit of infinite regress here since the desugaring apparently
still contains a literal 37
in it. The type of expressions contains a
primitive constructor for "raw natural number literals", which you can directly
access using the macro nat_lit 37
. Raw number literals are always of type Nat
.
So it would be more correct to say that Lean looks for an instance of
OfNat α (nat_lit 37)
, and it generates the term (OfNat.ofNat (nat_lit 37) : α)
.
Instance Constructor
OfNat.mk.{u} |
Methods
ofNat | : | α |
The |