...Annoyingly, almost all the time for my version is spent in protocol
dispatch, so there's probably a much faster way to do that.

On Sat Feb 14 2015 at 12:21:11 AM Michael Blume <[email protected]>
wrote:

> er, s/(comp val)/val
>
> On Sat Feb 14 2015 at 12:17:18 AM Michael Blume <[email protected]>
> wrote:
>
>> For minimal change to the presented code, what about
>>
>> (defprotocol appendable (append-to [this ^StringBuilder sb]))
>>
>> (extend-protocol appendable
>>   String
>>   (append-to [this ^StringBuilder sb] (.append sb this))
>>   clojure.lang.IFn
>>   (append-to [this ^StringBuilder sb] (this sb))
>>   Object
>>   (append-to [this ^StringBuilder sb] (.append sb (str this))))
>>
>> (defn final-str [a]
>>   (let [sb (StringBuilder.)]
>>     (append-to a sb)
>>     (str sb)))
>>
>> (defn par-join [sep xs]
>>   (fn [sb]
>>     (when-let [xs (seq xs)]
>>       (append-to (first xs) sb)
>>       (doseq [x (next xs)]
>>         (append-to sep sb)
>>         (append-to x sb)))))
>>
>> (let [f #(->> % (map (comp val)) (par-join ","))]
>>   (->> data-struct
>>     (map f)
>>     (par-join "\n")
>>     final-str))
>>
>> Which winds up taking about a second and only creates one StringBuilder.
>>
>>
>>
>> On Fri Feb 13 2015 at 8:02:27 PM Andy Chambers <[email protected]>
>> wrote:
>>
>>> Is there a reason you're collecting the result into a string rather than
>>> just writing out to a file?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to [email protected]
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> 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
>>> ---
>>> 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 [email protected].
>>> 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 [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
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
--- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to