1:30Jedi_Stannis: general question: when writing code, and you notice some repeated code that should be factored out, but you don't have a good name for it - its just some repeated logic - how do you come up with a good name for it?

1:34replaca: Jedi_Stannis: that's always a tough one. I've never come up with too good a way. Sometimes you can use "helper" kinds of names, but that feels like kind of a cop-out

12:07unlink: Oh, well you can always say nil if you can't find it, I guess.

12:07rhickey: replaca: looks like a good start - brief descriptions would be nice, I think you might want to use heading rather than bold on the names, also some subdirs are included, cluttering things up if they're not truly public entry points

12:08replaca: rhickey: thanks, yeah there is still a lot of formatting work

12:12rhickey: replaca: you should note that projects get added at my discretion - the talk on the group has largely ignored that. contrib is not a free-for-all. But your suggestion to release independently, talk about on group, offer to contrib is still correct.

12:12 replaca: but these docs and nav pages much appreciated - thanks!

12:13replaca: the problem with google wiki is that it's pretty restricted - I'm figuring I'll generate a second product which is pure semantic HTML in a zip file for consumption by others

12:59replaca: noidi: When what you have is OO tools, you might as well take an OO approach. But it is limiting in some ways.

13:01 noidi: In clojure you can think about taking fragments of the OO system and treating them functionally by doing attributes with maps, alternative functions with multi-methods, and visibility directly with namespaces

13:02 noidi: The advantage here is that you only use what you need and you can take advantage of commonality elsewhere

13:08replaca: Your first program doesn't have to be a functional masterpiece

13:23Chousuke: noidi: I think the important thing is to try to stop thinking of programs as a series of actions to execute. instead, it helps to try to visualise your problem as a series of transformations.

13:32replaca: hiredman: is it possible to make clojurebot ignore the autodoc robot updating the contrib wiki? That might get annoying.

14:20rhickey: AWizzArd: not sure I'm using it right yet, but you're welcome!

14:21AWizzArd: I am glad that the infrastructure for it showed up. Good direction

14:22technomancy: maacl: one trick I'm experimenting with is unpacking jars into a dependencies/ directory, then adding that to the classpath. that way you can add new dependencies without changing the classpath.

14:33AWizzArd: rhickey: *print-dup* is a fine thing and I am happy that it sits there, waiting for me. Great :) Just one request though: could you maybe add print-dup methods for Atoms, Refs, Agents and Futures?

14:59AWizzArd: rhickey: I would love to use my remaining 16 questions *g*. What is the problem with printing refs or atoms in a dup way? For example (defmethod clojure.core/print-dup clojure.lang.Ref [o, #^java.io.Writer w] (.write w (str "(ref " @o ")"))) seems to work for a simple case such as (pr-str (ref {:a 10, :b 20, :c (ref {})})). When I (read-str) the result of that I get: (ref {:c (ref {}), :b 20, :a 10})

15:00drewc: in fact, if one accounts for dynamic slot values ala ContextL, CLOS can be pretty close to 'pure', in the lack of side effects sense.

15:01 but this is the wrong channel for CLOS discussions, so i'll slink back to my hole :)

15:01noidi: I was just responding to [21:38] < Raynes> Why do people have to think that without object orientation, code is a monolithic mess :\

15:03AWizzArd: I would say that if I print a ref several times in a row then they should all yield the same result as long there was no state change during these prints.

15:04leafw: any setLookAndFeel wizzard could explain me why setting the look and feel in a static { } block of a class has no effect at all? Would appreciate very much.

15:04drewc: Cark: what it doesn't help with is to know when not to use macros. I've seen enough graham-ified codebases in the real world to have some serious issue with that book and the authors claims and style. this is opinion, YMMV.

15:05AWizzArd: One potential problem I see is if there is no global lock: when we have refs of hashmaps in which the values are refs again, then there may be state changes during the printing which the MVCC can not prevent from creating inconsistent data

15:05rhickey: AWizzArd: print-dup [aref aref aref], then read it in, probably not what you want (3 different refs)

15:07 i.e. if a reference type appears more than once in an object graph, it will become multiple independent refs in the read result. For values this is slightly wasteful of space, but harmless. The only reason it works for vars is becasue they are interned

15:14AWizzArd: rhickey needs to care about a solution that works in general. But perhaps for some use cases the simple approach from above may work out, so some users could think about having this in their own code.

15:15hiredman: if you print-dup things on different jvms and then both on one jvm, there is a potential for collisions

17:53technomancy: so I'm using proxy to wrap a Java class for testing purposes. the class's constructor takes an argument, but for testing this argument is irrelevant. Can I get my proxied object without calling the superclass constructor, or would I need to use gen-interface for that?

23:02arohner: this is sort of off topic, but there are a lot of smart people on here. I *think* I remember seeing a reference once to Prolog style inferences being NP-hard, and that the same limitation applied to generating optimal SQL plans. Is that true? If so, do you have references?