30 lines
836 B
Text
30 lines
836 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.expr
|
||
universe u
|
||
|
||
namespace Lean
|
||
|
||
class ToExpr (α : Type u) :=
|
||
(toExpr : α → Expr)
|
||
|
||
export ToExpr (toExpr)
|
||
|
||
instance exprToExpr : ToExpr Expr := ⟨id⟩
|
||
|
||
instance natToExpr : ToExpr Nat := ⟨fun n => Expr.lit (Literal.natVal n)⟩
|
||
|
||
instance strToExpr : ToExpr String := ⟨fun s => Expr.lit (Literal.strVal s)⟩
|
||
|
||
def nameToExprAux : Name → Expr
|
||
| Name.anonymous := mkConst `Lean.Name.anonymous
|
||
| (Name.mkString p s) := mkBinCApp `Lean.Name.mkString (nameToExprAux p) (toExpr s)
|
||
| (Name.mkNumeral p n) := mkBinCApp `Lean.Name.mkNumeral (nameToExprAux p) (toExpr n)
|
||
|
||
instance nameToExpr : ToExpr Name := ⟨nameToExprAux⟩
|
||
|
||
end Lean
|