diff --git a/kiss/src/kiss/SpecialForms.hx b/kiss/src/kiss/SpecialForms.hx index df2277b0..dc667e93 100644 --- a/kiss/src/kiss/SpecialForms.hx +++ b/kiss/src/kiss/SpecialForms.hx @@ -55,7 +55,10 @@ class SpecialForms { makeQuickNth(9, "tenth"); makeQuickNth(-1, "last"); - // TODO rest + map["rest"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { + wholeExp.checkNumArgs(1, 1, '(rest [list])'); + macro ${k.convert(args[0])}.slice(1); + }; // Declare anonymous objects map["object"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { diff --git a/kiss/src/test/cases/BasicTestCase.hx b/kiss/src/test/cases/BasicTestCase.hx index a3040c78..2bf55280 100644 --- a/kiss/src/test/cases/BasicTestCase.hx +++ b/kiss/src/test/cases/BasicTestCase.hx @@ -250,6 +250,10 @@ class BasicTestCase extends Test { function testRange() { _testRange(); } + + function testRest() { + _testRest(); + } } class BasicObject { diff --git a/kiss/src/test/cases/BasicTestCase.kiss b/kiss/src/test/cases/BasicTestCase.kiss index fbd1d183..d7e75837 100644 --- a/kiss/src/test/cases/BasicTestCase.kiss +++ b/kiss/src/test/cases/BasicTestCase.kiss @@ -367,4 +367,7 @@ (set myList (for i (range 7 17 2) i)) (Assert.equals 7 (first myList)) (Assert.equals 9 (second myList)) - (Assert.equals 15 (last myList))) \ No newline at end of file + (Assert.equals 15 (last myList))) + +(defun _testRest [] + (Assert.equals (.toString [2 3 4]) (.toString (rest [1 2 3 4])))) \ No newline at end of file