lean2/tests/lean/lua18.lean
Leonardo de Moura 4ba097a141 feat(frontends/lean): use lowercase commands, replace 'endscope' and 'endnamespace' with 'end'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-01-05 13:06:36 -08:00

25 lines
587 B
Text

import Int.
(*
macro("MyMacro", { macro_arg.Expr, macro_arg.Comma, macro_arg.Expr },
function (env, e1, e2)
return Const({"Int", "add"})(e1, e2)
end)
macro("Sum", { macro_arg.Exprs },
function (env, es)
if #es == 0 then
return iVal(0)
end
local r = es[1]
local add = Const({"Int", "add"})
for i = 2, #es do
r = add(r, es[i])
end
return r
end)
*)
print (MyMacro 10, 20) + 20
print (Sum)
print Sum 10 20 30 40
print fun x, Sum x 10 x 20
eval (fun x, Sum x 10 x 20) 100