2:28amalloy: also: what's going on inside the jvm is that clojure creates a new classloader for every unit it compiles. so there are two classes, both named Status and in the foo package, but from different classloaders

2:28replaca_: though my real point was that clojure_0000's comparison of = and .equals results seemed valid

2:29amalloy: clojure_0000: suggestion: treat records and structs as "advanced features", not "hey look i can make objects after all!"

16:08arthurdenture: Xenocorp, I get an answer when I evaluate that. can you more thoroughly describe "going wrong"?

16:11Xenocorp: indeed. I was running it through emacs, the eval line is only 1 line so I just saw the nil. My algorithm is wrong, but I will fix that :)

16:12arthurdenture: I'm using a library where lots of different namespaces get immigrated into a single ns "overtone.core". Is there a way to find the original definition site of a given immigrated name?

16:15arthurdenture: technomancy_, thanks, that worked! i guess i was assuming the way would be via the repl

16:15Raynes: technomancy_: Yeah. I was trying to run a website with 8 kabillion dependencies on Heroku, but `lein run` keeps trying to pull down deps but it times out because the app doesn't bind to a port within 60 seconds.

16:16technomancy_: Raynes: curious, there should be no dependencies fetched at runtime; they should all be downloaded at slug-compilation time.

16:16Raynes: Yeah, it does it at slug compilation time and when lein run is an.

16:44amalloy: Xenocorp: if you don't have a repl, you can't answer simple questions like "hm, what happens if i call foo with various args?" you have to set up a whole program that prompts for args, calls foo, and prints the result

16:44Raynes: Interactive development is something that can't really be explained to you. It's something you have to experience.

16:44 If you experience it, there isn't a question like "why a REPL" that makes sense.

16:45Xenocorp: I have experienced it, I find that entering things that require >1 line in a single line REPL the most painful experience ever. If I can write it out in a file, hit a single button to run it, what's the difference. When it's running, sure, a REPL is great. Before that, nope.

16:46amalloy: well that's not crazy. emacs's repl is a multi-line editable area

16:49choffstein: Can anyone point me to a good post / article / book on writing performant clojure? I've done some profiling with JVisualVM and seem to be spending a lot of time with reflections. I've set *warn-on-reflections* and gotten rid of everything I could. But I would love to read a page about where I can use type-hints, best uses of Java arrays, or when it is better to use maps vs records.

16:49Xenocorp: choffstein: There's a section about it in Practical Clojure on Apress pub, about 30-70 pages.. iirc

16:58choffstein: No worries. I just noticed an incredible speed-up in an app I am writing going from a generic map-of-maps to a map-of-records with type-hints. That sort of thing I never would have really "guessed." I'm trying to find more stuff like that.

17:01Xenocorp: practical clojure seems like a decent book. I need something a little more basic, but it sufficed to get me 'hooked' on clojure.

17:02mbai: is there an enhanced clojure repl that has built in doc, completion, sugar. some equivalent of ipython for python.

17:02dnolen: choffstein: what are you using the type hints for? field access?

17:14choffstein: dnolen: It's a lot of accessors, data being passed around, then some primitive math. Wish I could share, but it's company code :-\ The performance speed-up isn't necessary -- just nice

17:26rplevy: ok, so basically what is holding it up is going down the list of plugins and eliminating their contrib dependencies.

17:26clojure_0000: I have (:require foo.bar); then somewhere later, I use foo.bar/kick inside of a _macro_ -- do I have to do something special when using functions within a macro? [some lisps have multi level compilation; so depending on whether it's within a macro, I have to import the function in a special manner]

17:46choffstein: …shit, that isn't a bad idea. have a website with "bounties" for answers. People can pledge a certain amount for an answer, and the community votes if the answer is adequate for a release of the $$ :)

17:46dnolen: choffstein: if you search the ML I've written many times on Clojure perf, also I've got some posts on dosync.posterous.com

18:29ibdknox: replaca_: ah yes that makes things difficult. My biggest complaint was that I could never find one release to definitely use, I'm using someone's fork right now and it works only part of the time :(

18:29replaca_: ibdknox: I see that you're using a version that Rayne pushed to get around that