Reimplement butlast in terms of drop-last
This commit is contained in:
parent
7f5c8e39d8
commit
23f31d4ac1
@ -6,6 +6,31 @@ Hy Core
|
|||||||
Core Functions
|
Core Functions
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
.. _butlast-fn:
|
||||||
|
|
||||||
|
butlast
|
||||||
|
-------
|
||||||
|
|
||||||
|
Usage: ``(butlast coll)``
|
||||||
|
|
||||||
|
Returns an iterator of all but the last item in ``coll``.
|
||||||
|
|
||||||
|
.. code-block:: hy
|
||||||
|
|
||||||
|
=> (list (butlast (range 10)))
|
||||||
|
[0, 1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
|
||||||
|
=> (list (butlast [1]))
|
||||||
|
[]
|
||||||
|
|
||||||
|
=> (list (butlast []))
|
||||||
|
[]
|
||||||
|
|
||||||
|
=> (import itertools)
|
||||||
|
=> (list (take 5 (butlast (itertools.count 10))))
|
||||||
|
[10, 11, 12, 13, 14]
|
||||||
|
|
||||||
|
|
||||||
.. _is-coll-fn:
|
.. _is-coll-fn:
|
||||||
|
|
||||||
coll?
|
coll?
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
(defn butlast [coll]
|
(defn butlast [coll]
|
||||||
"Returns coll except of last element."
|
"Returns coll except of last element."
|
||||||
(itertools.islice coll 0 (dec (len coll))))
|
(drop-last 1 coll))
|
||||||
|
|
||||||
(defn coll? [coll]
|
(defn coll? [coll]
|
||||||
"Checks whether item is a collection"
|
"Checks whether item is a collection"
|
||||||
|
@ -38,6 +38,19 @@
|
|||||||
(assert-false (coll? "abc"))
|
(assert-false (coll? "abc"))
|
||||||
(assert-false (coll? 1)))
|
(assert-false (coll? 1)))
|
||||||
|
|
||||||
|
(defn test-butlast []
|
||||||
|
"NATIVE: testing butlast function"
|
||||||
|
(assert-equal (list (butlast (range 10)))
|
||||||
|
[0 1 2 3 4 5 6 7 8])
|
||||||
|
(assert-equal (list (butlast [1]))
|
||||||
|
[])
|
||||||
|
(assert-equal (list (butlast []))
|
||||||
|
[])
|
||||||
|
; with an infinite sequence
|
||||||
|
(import itertools)
|
||||||
|
(assert-equal (list (take 5 (butlast (itertools.count 10))))
|
||||||
|
[10 11 12 13 14]))
|
||||||
|
|
||||||
(defn test-cycle []
|
(defn test-cycle []
|
||||||
"NATIVE: testing cycle"
|
"NATIVE: testing cycle"
|
||||||
(assert-equal (list (cycle [])) [])
|
(assert-equal (list (cycle [])) [])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user