diff --git a/src/kiss/SpecialForms.hx b/src/kiss/SpecialForms.hx index 1b9a330..dbd96f1 100644 --- a/src/kiss/SpecialForms.hx +++ b/src/kiss/SpecialForms.hx @@ -221,6 +221,11 @@ class SpecialForms { EArrayDecl([forExpr("for", wholeExp, args, k)]).withMacroPosOf(wholeExp); }; + map["loop"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { + wholeExp.checkNumArgs(1, null, '(loop [body...])'); + EWhile(macro true, k.convert(wholeExp.expBuilder().begin(args)), true).withMacroPosOf(wholeExp); + }; + map["return"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { wholeExp.checkNumArgs(0, 1, '(return [?value])'); var returnExpr = if (args.length == 1) k.convert(args[0]) else null;