macroExpander for let

This commit is contained in:
2024-02-17 12:19:05 -07:00
parent e6005c4802
commit d5b14656f5
2 changed files with 19 additions and 0 deletions

View File

@@ -678,6 +678,19 @@ class SpecialForms {
b.callSymbol("localVar", [expandTypeAliases(args[0]), macroExpand(args[1])]);
};
map["let"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
var b = wholeExp.expBuilder();
var bindings = args[0];
var bindingsList = Helpers.argList(bindings, "let", false);
var newBindingsList = Lambda.flatten([
for (pair in bindingsList.groups(2)) {
[expandTypeAliases(pair[0]), macroExpand(pair[1])];
}
]);
var newBindings = b.list(newBindingsList);
b.callSymbol("let", [newBindings].concat(Lambda.map(args.slice(1), macroExpand)));
};
return map;
}

View File

@@ -38,4 +38,10 @@
(makeExampleNoValues
(localVar :Stream s (Stream.fromString "")))
// let
(makeExampleNoValues
(let [:Stream s (Stream.fromString "")
Stream (Stream.fromString "")]
null))
)