variadic concat. Close #18
This commit is contained in:
@@ -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
|
||||
|
@@ -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];
|
||||
|
@@ -55,6 +55,10 @@ class BasicTestCase extends Test {
|
||||
_testCollect();
|
||||
}
|
||||
|
||||
function testConcat() {
|
||||
_testConcat();
|
||||
}
|
||||
|
||||
function testVariadicAdd() {
|
||||
Assert.equals(6, BasicTestCase.mySum);
|
||||
}
|
||||
|
@@ -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)))
|
||||
|
Reference in New Issue
Block a user