On 4 February 2010 08:04, Wardrop <t...@tomwardrop.com> wrote:
> (defn <insert-name-here> [n base]
>  (loop [n n count 0]
>    (if (< n base)
>      {:val n :count count}
>      (recur (float (/ n base)) (inc count)))))
>
> [ ... ]
>
> I mean, what the hell would you name this function, or would you not
> create such an obscure and generalised function to start with?

How about significand-and-exponent-in-radix? :-)

(Or for a shorter name maybe sci-notation-map or something...)

In fact, I might generalise it further to accept an optional argument
-- defaulting to 0 -- to determine how the result is to be normalised:

user> (defn significand-and-exponent-in-radix
        ([n radix] (significand-and-exponent-in-radix n radix 1))
        ([n radix o]
           (let [threshold (Math/pow radix o)]
             (loop [n n count 0]
               (if (< n threshold)
                 {:significand n :exponent count}
                 (recur (double (/ n radix)) (inc count)))))))
#'user/significand-and-exponent-in-radix
user> (Math/pow 10 1)
10.0
user> (significand-and-exponent-in-radix 1000 10)
{:significand 1.0, :exponent 3}
user> (significand-and-exponent-in-radix 1000 10 0)
{:significand 0.1, :exponent 4}

Also, add docstrings. With the REPL at hand, the explanation of
anything unclear from your function's name is one (doc ...) call away
if you do.

All best,
Michał

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