[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash 70488c2 063/426: Add !rpartial
From: |
Phillip Lord |
Subject: |
[elpa] externals/dash 70488c2 063/426: Add !rpartial |
Date: |
Tue, 04 Aug 2015 19:36:44 +0000 |
branch: externals/dash
commit 70488c2d6d34bb17b091deb3adab3a894864efb7
Author: Magnar Sveen <address@hidden>
Commit: Magnar Sveen <address@hidden>
Add !rpartial
---
README.md | 19 ++++++++++++++++---
bang.el | 15 ++++++++++++---
examples.el | 6 +++++-
3 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 55b33d0..5885998 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@ Or you can just dump `bang.el` in your load path somewhere.
* [!mapcat](#mapcat-fn-list) `(fn list)`
* [!first](#first-fn-list) `(fn list)`
* [!partial](#partial-fn-rest-args) `(fn &rest args)`
+* [!rpartial](#rpartial-fn-rest-args) `(fn &rest args)`
* [!difference](#difference-list-list2) `(list list2)`
* [!intersection](#intersection-list-list2) `(list list2)`
* [!distinct](#distinct-list) `(list)`
@@ -172,14 +173,26 @@ To get the first item in the list no questions asked, use
`car`.
Takes a function `fn` and fewer than the normal arguments to `fn`,
and returns a fn that takes a variable number of additional `args`.
-When called, the returned function calls `fn` with `args` +
-additional args.
+When called, the returned function calls `fn` with `args` first and
+then additional args.
```cl
-(funcall (!partial '+ 5) 3) ;; => 8
+(funcall (!partial '- 5) 3) ;; => 2
(funcall (!partial '+ 5 2) 3) ;; => 10
```
+### !rpartial `(fn &rest args)`
+
+Takes a function `fn` and fewer than the normal arguments to `fn`,
+and returns a fn that takes a variable number of additional `args`.
+When called, the returned function calls `fn` with the additional
+args first and then `args`.
+
+```cl
+(funcall (!rpartial '- 5) 8) ;; => 3
+(funcall (!rpartial '- 5 2) 10) ;; => 3
+```
+
### !difference `(list list2)`
Return a new list with only the members of `list` that are not in `list2`.
diff --git a/bang.el b/bang.el
index 7ea865c..b8879c1 100644
--- a/bang.el
+++ b/bang.el
@@ -141,9 +141,18 @@ Thus function FN should return a collection."
(defun !partial (fn &rest args)
"Takes a function FN and fewer than the normal arguments to FN,
and returns a fn that takes a variable number of additional ARGS.
-When called, the returned function calls FN with ARGS +
-additional args."
- (apply 'apply-partially fn args))
+When called, the returned function calls FN with ARGS first and
+then additional args."
+ `(closure (t) (&rest args)
+ (apply ',fn ,@(mapcar (lambda (arg) `',arg) args) args)))
+
+(defun !rpartial (fn &rest args)
+ "Takes a function FN and fewer than the normal arguments to FN,
+and returns a fn that takes a variable number of additional ARGS.
+When called, the returned function calls FN with the additional
+args first and then ARGS."
+ `(closure (t) (&rest args)
+ (apply ',fn (append args ',args))))
(defun !distinct (list)
"Return a new list with all duplicates removed.
diff --git a/examples.el b/examples.el
index e0fcf9f..a57af86 100644
--- a/examples.el
+++ b/examples.el
@@ -64,9 +64,13 @@
(!!first (> it 2) '(1 2 3)) => 3)
(defexamples !partial
- (funcall (!partial '+ 5) 3) => 8
+ (funcall (!partial '- 5) 3) => 2
(funcall (!partial '+ 5 2) 3) => 10)
+(defexamples !rpartial
+ (funcall (!rpartial '- 5) 8) => 3
+ (funcall (!rpartial '- 5 2) 10) => 3)
+
(defexamples !difference
(!difference '() '()) => '()
(!difference '(1 2 3) '(4 5 6)) => '(1 2 3)
- [elpa] externals/dash 66ffaa6 072/426: Add !interpose, (continued)
- [elpa] externals/dash 66ffaa6 072/426: Add !interpose, Phillip Lord, 2015/08/04
- [elpa] externals/dash ec6a85f 074/426: Add threading macro !!-> with `it` as placeholder., Phillip Lord, 2015/08/04
- [elpa] externals/dash 6238f8f 077/426: Add !split-with, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4e76865 075/426: Add !take-while, Phillip Lord, 2015/08/04
- [elpa] externals/dash 3802890 082/426: Simplify !concat, Phillip Lord, 2015/08/04
- [elpa] externals/dash ec835e4 081/426: Add !split-at, Phillip Lord, 2015/08/04
- [elpa] externals/dash 0dab44c 084/426: Add -flatten, Phillip Lord, 2015/08/04
- [elpa] externals/dash 047eeea 066/426: Run tests on Emacs 24., Phillip Lord, 2015/08/04
- [elpa] externals/dash 9410f7e 073/426: Add !replace-where, Phillip Lord, 2015/08/04
- [elpa] externals/dash 123eaaa 078/426: Docs: Refer to !replace-where from !!replace-where., Phillip Lord, 2015/08/04
- [elpa] externals/dash 70488c2 063/426: Add !rpartial,
Phillip Lord <=
- [elpa] externals/dash 82a12a2 076/426: Add !drop-while, Phillip Lord, 2015/08/04
- [elpa] externals/dash fea1aa3 086/426: Add -interleave, Phillip Lord, 2015/08/04
- [elpa] externals/dash 38cc9e7 088/426: Simplify -interleave with -none?, Phillip Lord, 2015/08/04
- [elpa] externals/dash 9ff9fd0 085/426: Move functions that are not strictly list related last., Phillip Lord, 2015/08/04
- [elpa] externals/dash 0c55a4b 090/426: 1.0.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4b5e24b 087/426: Docs: move -any? -all? -none? and -each up., Phillip Lord, 2015/08/04
- [elpa] externals/dash f8d74ff 091/426: Docs: update example text to match example code., Phillip Lord, 2015/08/04
- [elpa] externals/dash eacb6f2 092/426: Docs: Better generation of github urls., Phillip Lord, 2015/08/04
- [elpa] externals/dash 8c75026 080/426: Add !drop, Phillip Lord, 2015/08/04
- [elpa] externals/dash a2941cd 097/426: Typo, Phillip Lord, 2015/08/04