/- 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