diff --git a/hy/core/bootstrap.py b/hy/core/bootstrap.py index 45f5ae2..a9e0a96 100644 --- a/hy/core/bootstrap.py +++ b/hy/core/bootstrap.py @@ -103,3 +103,14 @@ def first_macro(tree): return HyExpression([HySymbol('get'), ret, HyInteger(0)]) + + +@macro("cdr") +@macro("rest") +def rest_macro(tree): + tree.pop(0) # "first" + ret = tree.pop(0) # the list + # assert tree is empty + return HyExpression([HySymbol('slice'), + ret, + HyInteger(1)]) diff --git a/tests/native_tests/language.hy b/tests/native_tests/language.hy index 3a4ddcf..0ea211d 100644 --- a/tests/native_tests/language.hy +++ b/tests/native_tests/language.hy @@ -183,3 +183,8 @@ (assert (= (slice [1 2 3 4 5] 1) [2 3 4 5])) (assert (= (slice [1 2 3 4 5] 1 3) [2 3])) (assert (= (slice [1 2 3 4 5]) [1 2 3 4 5]))) + + +(defn test-rest [] + "NATIVE: test rest" + (assert (= (rest [1 2 3 4 5]) [2 3 4 5])))