Andy Coolware <andy.coolw...@gmail.com> writes:

> Hi,
>
> I am looking for two seemingly simple operations which require adding
> to the list:
>
> (( 1 2 ) ( 20 30) (40))     50     => (( 1 2 ) ( 20 30) (40 50))
>
> and
>
> (( 1 2 ) ( 20 30) (40 50))             60  =>  (( 1 2 ) ( 20 30) (40 50) (60))
>
>
> Basically it is appending an element as a list to the list ...
>
> Any simple ideas?
>
>
> Thx,
> Andy

This is a terrible slow implementation:

--8<---------------cut here---------------start------------->8---
(defn foo [lst x]
  (let [[a b] (last lst)]
    (if b
      (concat lst (list (list x)))
      (concat (butlast lst) (list (list a x))))))
--8<---------------cut here---------------end--------------->8---

You could use zippers here, but it would propably be slower.

Cheers,
Moritz

--
Moritz Ulrich

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to