aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/collections.lisp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/collections.lisp b/src/collections.lisp
new file mode 100644
index 0000000..4e7aae4
--- /dev/null
+++ b/src/collections.lisp
@@ -0,0 +1,15 @@
+(in-package :senzill.collections)
+
+(defmacro push-back (item place)
+ "Item is appended to the (right) end of the place (list)"
+ `(setf ,place (append ,place (list ,item))))
+
+(defmacro pop-back (place)
+ "Removes destructively last element and returns it"
+ `(progn (let ((val (car (last ,place))))
+ (nbutlast ,place)
+ val)))
+
+(defun slice (place &key (begin 0) (end (length place)))
+ "Returns list of elements from begin to end indecies, inclusive"
+ (butlast (nthcdr begin place) (- (length place) end 1)))