28 lines
678 B
Text
28 lines
678 B
Text
/-
|
||
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
|
||
Released under Apache 2.0 license as described in the file LICENSE.
|
||
Authors: Leonardo de Moura
|
||
-/
|
||
prelude
|
||
import init.lean.name
|
||
|
||
namespace Lean
|
||
|
||
structure NameGenerator :=
|
||
(namePrefix : Name := `_uniq)
|
||
(idx : Nat := 1)
|
||
|
||
namespace NameGenerator
|
||
|
||
instance : Inhabited NameGenerator := ⟨{}⟩
|
||
|
||
def next (g : NameGenerator) : Name × NameGenerator :=
|
||
(Name.mkNumeral g.namePrefix g.idx, { idx := g.idx + 1, .. g })
|
||
|
||
def mkChild (g : NameGenerator) : NameGenerator × NameGenerator :=
|
||
({ namePrefix := Name.mkNumeral g.namePrefix g.idx, idx := 1 },
|
||
{ idx := g.idx + 1, .. g })
|
||
|
||
end NameGenerator
|
||
|
||
end Lean
|