variadic concat. Close #18

This commit is contained in:
2021-07-22 13:55:47 -06:00
parent b9041ccff8
commit 19b452309b
4 changed files with 18 additions and 0 deletions

View File

@@ -56,6 +56,7 @@ class Kiss {
"print" => Symbol("Prelude.print"),
"sort" => Symbol("Prelude.sort"),
"groups" => Symbol("Prelude.groups"),
"concat" => Symbol("Prelude.concat"),
"pairs" => Symbol("Prelude.pairs"), // TODO test pairs
"reversed" => Symbol("Prelude.reversed"), // TODO test reversed
"memoize" => Symbol("Prelude.memoize"), // TODO test memoize

View File

@@ -170,6 +170,16 @@ class Prelude {
return fullGroups;
}
static function _concat(arrays:Array<Dynamic>):Array<Dynamic> {
var arr:Array<Dynamic> = arrays[0];
for (nextArr in arrays.slice(1)) {
arr = arr.concat(nextArr);
}
return arr;
}
public static var concat:Function = Reflect.makeVarArgs(_concat);
public static function zip(arrays:Array<Array<Dynamic>>, extraHandling = Drop):kiss.List<kiss.List<Dynamic>> {
var lengthsAreEqual = true;
var lengths = [for (arr in arrays) arr.length];

View File

@@ -55,6 +55,10 @@ class BasicTestCase extends Test {
_testCollect();
}
function testConcat() {
_testConcat();
}
function testVariadicAdd() {
Assert.equals(6, BasicTestCase.mySum);
}

View File

@@ -109,6 +109,9 @@
(defun myTypeCheck []
(the Int 5))
(defun _testConcat []
(Assert.equals (.toString [1 2 3 4]) (.toString (concat [1] [2 3] [4]))))
(defun _testGroups []
(Assert.equals (.toString [[1 2] [3 4]]) (.toString (groups [1 2 3 4] 2)))
(Assert.equals (.toString [[1 2 3] [4]]) (.toString (groups [1 2 3 4] 3 Keep)))