Make setNth n-dimensional

This commit is contained in:
2022-07-09 14:46:09 +00:00
parent 1a078fdbe5
commit a98bf4cdde

View File

@@ -315,13 +315,14 @@ class Macros {
function arraySet(wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) { function arraySet(wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) {
var b = wholeExp.expBuilder(); var b = wholeExp.expBuilder();
var value = exps.pop();
return b.call( return b.call(
b.symbol("set"), [ b.symbol("set"), [
b.call(b.symbol("nth"), [exps[0], exps[1]]), b.call(b.symbol("nth"), exps),
exps[2] value
]); ]);
} }
k.doc("setNth", 3, 3, "(setNth <list> <index> <value>)"); k.doc("setNth", 3, null, "(setNth <list> <index> <?n-dimensional indices...> <value>)");
macros["setNth"] = (wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) -> { macros["setNth"] = (wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) -> {
arraySet(wholeExp, exps, k); arraySet(wholeExp, exps, k);
}; };