master
Magnar Sveen 14 years ago
parent b9b6330216
commit 8c75026576
  1. 10
      README.md
  2. 7
      bang.el
  3. 4
      examples.el

@ -21,6 +21,7 @@ Or you can just dump `bang.el` in your load path somewhere.
* [!concat](#concat-rest-lists) `(&rest lists)`
* [!mapcat](#mapcat-fn-list) `(fn list)`
* [!take](#take-n-list) `(n list)`
* [!drop](#drop-n-list) `(n list)`
* [!take-while](#take-while-fn-list) `(fn list)`
* [!drop-while](#drop-while-fn-list) `(fn list)`
* [!split-with](#split-with-fn-list) `(fn list)`
@ -175,6 +176,15 @@ Returns a new list of the first `n` items in `list`, or all items if there are f
(!take 17 '(1 2 3 4 5)) ;; => '(1 2 3 4 5)
```
### !drop `(n list)`
Returns the tail of `list` without the first `n` items.
```cl
(!drop 3 '(1 2 3 4 5)) ;; => '(4 5)
(!drop 17 '(1 2 3 4 5)) ;; => '()
```
### !take-while `(fn list)`
Returns a new list of successive items from `list` while (`fn` item) returns a non-nil value.

@ -153,6 +153,13 @@ Thus function FN should return a collection."
(setq n (1- n)))
(nreverse result)))
(defun !drop (n list)
"Returns the tail of LIST without the first N items."
(while (and list (> n 0))
(setq list (cdr list))
(setq n (1- n)))
list)
(defmacro !!take-while (form list)
"Anaphoric form of `!take-while'."
(let ((l (make-symbol "list"))

@ -62,6 +62,10 @@
(!take 3 '(1 2 3 4 5)) => '(1 2 3)
(!take 17 '(1 2 3 4 5)) => '(1 2 3 4 5))
(defexamples !drop
(!drop 3 '(1 2 3 4 5)) => '(4 5)
(!drop 17 '(1 2 3 4 5)) => '())
(defexamples !take-while
(!take-while 'even? '(1 2 3 4)) => '()
(!take-while 'even? '(2 4 5 6)) => '(2 4)

Loading…
Cancel
Save