my unsafe version works now, thanks to a LOT of help.
(defn msort [toSort]
(with-local-vars [my-list (for [x toSort] [x])]
(while (rest @my-list)
(let [[l1 l2 & my-list-rest] @my-list]
(var-set my-list (conj my-list-rest (listmerge l1 l2)))
)) (first @my-list)))
now I'm trying to make a shorter version of the loop/recur version than
James provided because, even though I think I understand, somehow I probably
don't. From what it looks like the my-list get's it's initial bindings from
the vector map operation, but after that, it gets them from recur.
Here's what I'm trying, but it says wrong number of arguments. I haven't
taken the time yet to make the script environment.
(defn msort2 [toSort]
(loop [[l1 l2 & my-list] (for [x toSort] [x])]
(if (l2)
(recur (conj my-list (listmerge l1 l2)))
l1)))
i'm trying to say, "if there's a second list in my-list, then there's still
merging to do.
i tested that l1 l2 & stuff with edge cases, and it handles them fine (no
elements in list, one element, two, 3, etc). I like that construct, a lot.
smart!
but my code doesn't work.
On Mon, Jan 12, 2009 at 10:59 PM, Timothy Pratley
<[email protected]>wrote:
>
> > by the way, Tim, I've seen NB before as comments in J. What's it stand
> for?
>
> An abbreviation for nota bene, a Latin expression meaning "note
> well".
>
>
> > I need to learn how to run closure code as a script then.
>
> http://en.wikibooks.org/wiki/Clojure_Programming/Getting_Started
> first section shows you how
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---