MIT-lisp is more for teaching than industrial use..

We also have hash-maps, vectors, sets, queues, conj works with all of them,
leaving the details up to the collection.

Cons always adds to the front.  Conj only adds to the back for certain
collections (vector, queue).

You could work around it by reversing, consing, then reversing again, or
just use vectors and conj if you're always working on the tail.


On Thu, Apr 24, 2014 at 11:27 AM, Jiacai Liu <jiacai2...@gmail.com> wrote:

> Oh,Thank you for answer.
> But if I just want to insert a element to list,and meantime want to insert
> in the back.How should I do?
> Another question: why clojure need both cons and conj? In mit-lisp cons
> just do all things.
>
>
> On Thursday, April 24, 2014 11:12:49 PM UTC+8, Gary Trakhman wrote:
>
>> Conj is polymorphic on its first argument. If you pass it a vector, it'll
>> add to the back, if a list, the front.  The collection is responsible for
>> deciding the most efficient way to add an element.
>>
>> Cons always adds to the front, creating a linked-list node pointing to
>> the rest.  Also, cons takes the sequence as the second argument.
>>
>>
>> On Thu, Apr 24, 2014 at 11:10 AM, Jiacai Liu <jiaca...@gmail.com> wrote:
>>
>>> hi everyone:
>>> I use Clojure to solve SICP 2.22 
>>> <http://www.billthelizard.com/2011/01/sicp-221-223-mapping-over-lists.html>
>>> .
>>> The problem is to rewrite a map fn in a iterative way,here it want to
>>> get the square of each element in a list
>>> Method 1:
>>> (defn square-list [items]
>>>   (defn iter [things answer]
>>>     (if (empty? things)
>>>       answer
>>>       (iter
>>>         (rest things)
>>>         (cons (square (first things)) answer))))
>>>   (iter items nil))
>>> This method just return opposite result.
>>> (square-list (range 1 10))
>>> ;===>(81 64 49 36 25 16 9 4 1)
>>>
>>> I think all I need is to swap the position of (square (first 
>>> things))andanswer,then
>>> I can get the right order
>>> I write fn below:
>>> Method 2
>>> (defn square-list [items]
>>>   (defn iter [things answer]
>>>     (if (empty? things)
>>>       answer
>>>       (iter
>>>         (rest things)
>>>         (conj answer (square (first things))))))
>>>   (iter items nil))
>>> However, it still return opposite order.
>>> Did I misuse cons and conj or I ignore something?
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@googlegroups.com
>>>
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+u...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to