emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/dash 12ed9f6 100/439: Add destructive operations !cons


From: Phillip Lord
Subject: [elpa] externals/dash 12ed9f6 100/439: Add destructive operations !cons og !cdr
Date: Tue, 04 Aug 2015 20:26:52 +0000

branch: externals/dash
commit 12ed9f6622f66daffeb0c23d5497cd2933333225
Author: Magnar Sveen <address@hidden>
Commit: Magnar Sveen <address@hidden>

    Add destructive operations !cons og !cdr
---
 README.md   |   20 ++++++++++++++++++++
 dash.el     |    8 ++++++++
 examples.el |    8 ++++++++
 3 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md
index 419955b..1c309e5 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,8 @@ Or you can just dump `dash.el` in your load path somewhere.
 * [->](#--x-optional-form-rest-more) `(x &optional form &rest more)`
 * [->>](#--x-form-rest-more) `(x form &rest more)`
 * [-->](#---x-form-rest-more) `(x form &rest more)`
+* [!cons](#-cons-car-cdr) `(car cdr)`
+* [!cdr](#-cdr-list) `(list)`
 
 There are also anaphoric versions of these functions where that makes sense,
 prefixed with two dashes instead of one.
@@ -461,6 +463,24 @@ in in second form, etc.
 (--> "def" (concat "abc" it "ghi") upcase) ;; => "ABCDEFGHI"
 ```
 
+### !cons `(car cdr)`
+
+Destructive: Sets `cdr` to the cons of `car` and `cdr`.
+
+```cl
+(let (l) (!cons 5 l) l) ;; => '(5)
+(let ((l '(3))) (!cons 5 l) l) ;; => '(5 3)
+```
+
+### !cdr `(list)`
+
+Destructive: Sets `list` to the cdr of `list`.
+
+```cl
+(let ((l '(3))) (!cdr l) l) ;; => '()
+(let ((l '(3 5))) (!cdr l) l) ;; => '(5)
+```
+
 
 ## Development
 
diff --git a/dash.el b/dash.el
index a115338..2756529 100644
--- a/dash.el
+++ b/dash.el
@@ -27,6 +27,14 @@
 
 ;;; Code:
 
+(defmacro !cons (car cdr)
+  "Destructive: Sets CDR to the cons of CAR and CDR."
+  `(setq ,cdr (cons ,car ,cdr)))
+
+(defmacro !cdr (list)
+  "Destructive: Sets LIST to the cdr of LIST."
+  `(setq ,list (cdr ,list)))
+
 (defun -map (fn list)
   "Returns a new list consisting of the result of applying FN to the items in 
LIST."
   (mapcar fn list))
diff --git a/examples.el b/examples.el
index 1c8211a..bbe5654 100644
--- a/examples.el
+++ b/examples.el
@@ -189,3 +189,11 @@
   (--> "def" (concat "abc" it "ghi")) => "abcdefghi"
   (--> "def" (concat "abc" it "ghi") (upcase it)) => "ABCDEFGHI"
   (--> "def" (concat "abc" it "ghi") upcase) => "ABCDEFGHI")
+
+(defexamples !cons
+  (let (l) (!cons 5 l) l) => '(5)
+  (let ((l '(3))) (!cons 5 l) l) => '(5 3))
+
+(defexamples !cdr
+  (let ((l '(3))) (!cdr l) l) => '()
+  (let ((l '(3 5))) (!cdr l) l) => '(5))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]