On Sat, 19 Jun 2010 20:40:13 -0400
David Nolen <dnolen.li...@gmail.com> wrote:

> Mark and Mike you fail to address my deeper question.

Maybe because you've failed to ask in your hurry to claim code is
non-idiomatic or calling our example rhetoric.

> I've been using
> many different Clojure libraries all day long with the latest equals
> branch. Guess
> what?
> 
> No loop/recur bugs.

I wouldn't expect anything else, for two reasons:

1) Most clojure code doesn't deal with integers - it deals with
   symbols, strings, and sequences. Hence it won't run into this problem.
2) The libraries are generally written by experienced users who will
   have tweaked them for performance - meaning they've typed hinted
   them, and thus avoided this problem.

> When you guys start postIng your broken code that has this problem
> then people can start believing it is an issue for working code.

I guess a perfectly natural expression of a reasonable algorithm that
works under 1.1 and doesn't on the equal branch isn't "broken" because
it's the same function we've been using all along. So here's some new
examples, pulled in sequence from some of my combinatorics code:

(defn count-in [value col]
   (loop [value value col col res 0]
      (if (empty? col)
          res
          (recur value (rest col) (if (= (first col) value) (inc res) res)))))

(defn ones-n-zeros [vectors]
  (loop [vectors vectors m-zeros 0 m-ones 0]
     (if (empty? vectors)
         [m-zeros m-ones]
         (let [data (first vectors)
               zeros (count-in 0 data)
               ones (count-in 1 data)]
            (recur (rest vectors) (if (> zeros ones) (inc m-zeros) m-zeros)
                                  (if (> ones zeros) (inc m-ones) m-ones))))))

No, I haven't verified it fails - I've given up trying to check out
the branch, as hg convert failed, and git (after reinstalling over a
broken version) keeps complaining about "warning: remote HEAD refers
to nonexistent ref, unable to checkout." However, my reading of the
proposal is that the inc's here will cause the same problems as the
*'s in the perfectly reasonable factorial example.

Now go ahead and claim that that's not very good code, because an
expert would have type hinted it or written it with map & apply or
some such, or that there's a contrib library somewhere with a faster
implementation of count-in in it. That, after all, is your rhetoric.

But that's my point. I want the *obvious* code to work. I'll worry
about making it fast after I've made it right. If you want a read-only
language that requires an expert to get working code in a reasonable
amount of time, you can always write in Perl or C.

       <mike
-- 
Mike Meyer <m...@mired.org>             http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

-- 
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