[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Easy to add with push but not to the end of a list
From: |
Emanuel Berg |
Subject: |
Re: Easy to add with push but not to the end of a list |
Date: |
Mon, 28 Nov 2022 21:19:30 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Stefan Monnier via Users list for the GNU Emacs text editor wrote:
>> Although it is easy to add to a list using push, it
>> currently looks hideous to be able to add to the end of
>> a list.
>
> That's because adding to the end of a Lisp list is
> a *bad* idea.
Let's make it as good as possible first ...
Why is the below O(N), because of `last'?
(defun push-last (elem lst)
(let ((elem-lst (list elem)))
(if lst
(setcdr (last lst) elem-lst)
(setq lst elem-lst) )
lst) )
;; (setq nil-lst nil)
;;
;; (push-last 1 nil-lst) ; (1)
;;
;; (setq lst '(1 2 3 4))
;;
;; (push-last 5 lst) ; (1 2 3 4 5)
;;
;; lst ; (1 2 3 4 5)
--
underground experts united
https://dataswamp.org/~incal
- Easy to add with push but not to the end of a list, Heime, 2022/11/27
- Re: Easy to add with push but not to the end of a list, tomas, 2022/11/29
- Re: Easy to add with push but not to the end of a list, Heime, 2022/11/29
- Re: Easy to add with push but not to the end of a list, Marcin Borkowski, 2022/11/29
- Re: Easy to add with push but not to the end of a list, Heime, 2022/11/29