Simplify -cons-pair?

* dash.el (-cons-pair?): Simplify for speed.
* dev/examples.el (-cons-pair?): New test.

* README.md:
* dash.texi: Regenerate docs.
master
Basil L. Contovounesios 5 years ago
parent 3423be4e53
commit 994cda98ca
No known key found for this signature in database
GPG Key ID: 205AB54A5D5D8CFF
  1. 13
      README.md
  2. 12
      dash.el
  3. 22
      dash.texi
  4. 11
      dev/examples.el

@ -210,6 +210,7 @@ value rather than consuming a list to produce a single value.
* [-is-prefix?](#-is-prefix-prefix-list) `(prefix list)` * [-is-prefix?](#-is-prefix-prefix-list) `(prefix list)`
* [-is-suffix?](#-is-suffix-suffix-list) `(suffix list)` * [-is-suffix?](#-is-suffix-suffix-list) `(suffix list)`
* [-is-infix?](#-is-infix-infix-list) `(infix list)` * [-is-infix?](#-is-infix-infix-list) `(infix list)`
* [-cons-pair?](#-cons-pair-obj) `(obj)`
### Partitioning ### Partitioning
@ -1345,6 +1346,18 @@ Alias: `-is-infix-p`
(-is-infix? '(3 4 5) '(1 2 3 4 5)) ;; => t (-is-infix? '(3 4 5) '(1 2 3 4 5)) ;; => t
``` ```
#### -cons-pair? `(obj)`
Return non-nil if `obj` is a true cons pair.
That is, a cons (`a` . `b`) where `b` is not a list.
Alias: `-cons-pair-p`.
```el
(-cons-pair? '(1 . 2)) ;; => t
(-cons-pair? '(1 2)) ;; => nil
(-cons-pair? '(1)) ;; => nil
```
## Partitioning ## Partitioning

@ -2724,14 +2724,12 @@ the new seed."
(declare (debug (form form))) (declare (debug (form form)))
`(-unfold (lambda (it) ,form) ,seed)) `(-unfold (lambda (it) ,form) ,seed))
(defun -cons-pair? (con) (defun -cons-pair? (obj)
"Return non-nil if CON is true cons pair. "Return non-nil if OBJ is a true cons pair.
That is (A . B) where B is not a list. That is, a cons (A . B) where B is not a list.
Alias: `-cons-pair-p'."
Alias: `-cons-pair-p'"
(declare (pure t) (side-effect-free t)) (declare (pure t) (side-effect-free t))
(and (listp con) (nlistp (cdr-safe obj)))
(not (listp (cdr con)))))
(defalias '-cons-pair-p '-cons-pair?) (defalias '-cons-pair-p '-cons-pair?)

@ -1903,6 +1903,28 @@ Alias: @code{-is-infix-p}
@end example @end example
@end defun @end defun
@anchor{-cons-pair?}
@defun -cons-pair? (obj)
Return non-nil if @var{obj} is a true cons pair.
That is, a cons (@var{a} . @var{b}) where @var{b} is not a list.
Alias: @code{-cons-pair-p}.
@example
@group
(-cons-pair? '(1 . 2))
@result{} t
@end group
@group
(-cons-pair? '(1 2))
@result{} nil
@end group
@group
(-cons-pair? '(1))
@result{} nil
@end group
@end example
@end defun
@node Partitioning @node Partitioning
@section Partitioning @section Partitioning

@ -618,7 +618,16 @@ value rather than consuming a list to produce a single value."
(-is-infix? '(2 3 4) '(1 2 3 4 5)) => t (-is-infix? '(2 3 4) '(1 2 3 4 5)) => t
(-is-infix? '(3 4 5) '(1 2 3 4 5)) => t (-is-infix? '(3 4 5) '(1 2 3 4 5)) => t
(-is-infix? '(2 3 4) '(1 2 4 5)) => nil (-is-infix? '(2 3 4) '(1 2 4 5)) => nil
(-is-infix? '(2 4) '(1 2 3 4 5)) => nil)) (-is-infix? '(2 4) '(1 2 3 4 5)) => nil)
(defexamples -cons-pair?
(-cons-pair? '(1 . 2)) => t
(-cons-pair? '(1 2)) => nil
(-cons-pair? '(1)) => nil
(-cons-pair? ()) => nil
(-cons-pair? "") => nil
(-cons-pair? '(1 2 . 3)) => nil
(-cons-pair? '(() . "")) => t))
(def-example-group "Partitioning" (def-example-group "Partitioning"
"Functions partitioning the input list into a list of lists." "Functions partitioning the input list into a list of lists."

Loading…
Cancel
Save