summaryrefslogtreecommitdiffhomepage
path: root/common-lisp.html.markdown
diff options
context:
space:
mode:
authorGoheeca <goheeca@gmail.com>2013-08-20 17:58:33 +0200
committerGoheeca <goheeca@gmail.com>2013-08-20 17:58:33 +0200
commitedf839bfaefcdeb567ead6af0572d1e5195b4a3d (patch)
treea15d09eef4f9d4110b383ff63ed9f994eb1e762f /common-lisp.html.markdown
parent424fc8ce80af45cdf64037eee9de7773971194aa (diff)
added adjustable vectors
Diffstat (limited to 'common-lisp.html.markdown')
-rw-r--r--common-lisp.html.markdown19
1 files changed, 18 insertions, 1 deletions
diff --git a/common-lisp.html.markdown b/common-lisp.html.markdown
index 0a8ce990..bf4844f3 100644
--- a/common-lisp.html.markdown
+++ b/common-lisp.html.markdown
@@ -219,7 +219,7 @@ nil ; for false - and the empty list
;;; Vectors
-;; Vectors are fixed-length arrays
+;; Vector's literals are fixed-length arrays
#(1 2 3) ; => #(1 2 3)
;; Use concatenate to add vectors together
@@ -253,6 +253,23 @@ nil ; for false - and the empty list
; => 0
+;;; Adjustable vectors
+
+;; Adjustable vectors have the same printed representation
+;; as fixed-length vector's literals.
+
+(defparameter *adjvec* (make-array '(3) :initial-contents '(1 2 3)
+ :adjustable t :fill-pointer t))
+
+*adjvec* ; => #(1 2 3)
+
+;; Adding new element:
+(vector-push-extend 4 *adjvec*) ; => 3
+
+*adjvec* ; => #(1 2 3 4)
+
+
+
;;; Naively, sets are just lists:
(set-difference '(1 2 3 4) '(4 5 6 7)) ; => (3 2 1)