feat(library/init/lean/elaborator): arrow, hole and sorry
This commit is contained in:
parent
68a93a358c
commit
cbcf2a8a49
3 changed files with 24 additions and 2 deletions
|
|
@ -406,6 +406,12 @@ namespace Elab
|
|||
instance {α} : Inhabited (Elab α) :=
|
||||
⟨fun _ => default _⟩
|
||||
|
||||
def mkFreshName : Elab Name :=
|
||||
do s ← get;
|
||||
let n := s.ngen.curr;
|
||||
modify $ fun s => { ngen := s.ngen.next, .. s };
|
||||
pure n
|
||||
|
||||
def getScope : Elab ElabScope :=
|
||||
do s ← get; pure s.scopes.head
|
||||
|
||||
|
|
|
|||
|
|
@ -118,5 +118,18 @@ fun n => do
|
|||
else
|
||||
pure $ Expr.sort level
|
||||
|
||||
@[builtinPreTermElab «arrow»] def convertArrow : PreTermElab :=
|
||||
fun n => do
|
||||
id ← mkFreshName;
|
||||
dom ← toPreTerm $ n.getArg 0;
|
||||
rng ← toPreTerm $ n.getArg 2;
|
||||
pure $ Expr.pi id BinderInfo.default dom rng
|
||||
|
||||
@[builtinPreTermElab «hole»] def convertHole : PreTermElab :=
|
||||
fun _ => pure $ Expr.mvar Name.anonymous
|
||||
|
||||
@[builtinPreTermElab «sorry»] def convertSorry : PreTermElab :=
|
||||
fun _ => pure $ Expr.app (Expr.const `sorryAx []) (Expr.mvar Name.anonymous)
|
||||
|
||||
end Elab
|
||||
end Lean
|
||||
|
|
|
|||
|
|
@ -16,8 +16,11 @@ namespace NameGenerator
|
|||
|
||||
instance : Inhabited NameGenerator := ⟨{}⟩
|
||||
|
||||
def next (g : NameGenerator) : Name × NameGenerator :=
|
||||
(Name.mkNumeral g.namePrefix g.idx, { idx := g.idx + 1, .. g })
|
||||
def curr (g : NameGenerator) : Name :=
|
||||
Name.mkNumeral g.namePrefix g.idx
|
||||
|
||||
def next (g : NameGenerator) : NameGenerator :=
|
||||
{ idx := g.idx + 1, .. g }
|
||||
|
||||
def mkChild (g : NameGenerator) : NameGenerator × NameGenerator :=
|
||||
({ namePrefix := Name.mkNumeral g.namePrefix g.idx, idx := 1 },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue