0:30 avida: is there an identity function such that (identity x) = x ?
0:31 dude, there is such a function, named identity :) duh
2:50 yangsx: in explore-clojure.clj from unit-test, there is (apply and '(true false)), but Clojure seems to have changed in this respect
9:56 Chouser: Hm, Rhino appears to have continuations, so if people *really* want that in Clojure... ;-)
12:23 drewr: Can I undo the effects of defonce?
12:23 Or do I need to restart the JVM?
12:24 I used it on a database conn that went away and I need to bind the symbol to a new one.
12:28 Chouser: I think you can, hang on.
12:30 drewr: Ah, OK.
12:31 Another q.
12:32 I have /path/to/foo on the classpath and a file /path/to/foo/foo.clj exists with (ns foo ...) in it.
12:33 (ns bar (:require (foo))) tells me "No such namespace: foo."
12:33 Chouser: the "standard" diretory layout would be to have /some/path/foo/foo.clj, and to put /some/path in your classpath
12:34 drewr: I mistyped, sorry. /path/to is on the classpath.
12:36 Chouser: (ns bar (:require foo))
12:36 drewr: So you only use parens when you're importing multiple symbols.
12:37 I mean multiple symbols in a particular namespace.
12:37 Like (import (package class class ...)).
13:52 Chouser: drewr: yeah, I guess you're right.
13:52 (ns bar (:require (clojure.contrib [mmap :as mmap] zip-filter)))
14:02 rhickey: I imagine you're busy -- do you have time for me to quiz you a bit on some BitmapIndexedNode details?
14:03 rhickey: you could try me, might be a gap till reply
14:03 Chouser: ok, my implementation is failing, so there's some discrepency between your java and my js that I'm not seeing.
14:04 are any of these assertions false? 1. the nodes array is always full (no nulls)
14:05 rhickey: always full
14:05 Chouser: 2. if a new node needs to be added at a given level, it's inserted at the index produced by the index method, possibly scooting some older ones on down the array.
14:08 rhickey: yes
14:08 Chouser: I guess (2) is the crux. Looking at the code it seems it has to be true, but if so I don't understand how the older values are ever found.
14:09 I guess I can try stepping through the java. :-/
14:10 * Chouser digs into it again.
14:17 avida: Chouser: your ClojureScript uses Rhino?
14:18 Chouser: avida: ClojureScript generates "standard" JS, so as long as you're not trying to use the browser's DOM, you can use it in Rhino.
14:19 Why you would (other than for testing) I can't imagine -- if you've got Rhino, you've got the JVM; if you've got the JVM, use Clojure for goodness' sake.
14:22 Chouser: woo! over that hurdle. rhickey: thanks for the hand.
14:22 avida: that makes sense, but I don't see why anyone would use clojurescript in that scenario.
14:23 avida: yours is for if you want to use JS in both browser and server, right?
14:23 clojurescript would allow you to use clojure (or something very like it) in both browser and server.
14:26 avida: mine is for JS; was just curious about clojurescript since you mention it with rhino earlier
14:30 actually you just mentond rhino and clojure by itself (continutations)
14:34 Chouser: yeah, that was a joke. That would be one very goofy reason for using ClojureScript on Rhino -- continuations might work, at the cost of a lot of speed and several other clojure features (STM, agents, etc.)
14:38 abrooks_: Chouser: Aside from Rhino there's also SpiderMonkey which can be used standalone and built into other systems which don't use DOM.
14:39 Chouser: abrooks: indeed.
14:39 also qtscript
14:39 abrooks: Hm. I'm guessing the proxy.pac environment is probably too restricted for ClojureScript.
14:40 Not that I really nead Clojure to write my proxy files...
16:41 Shouldn't (import '(DOESNOTEXIST)) raise an exception?
16:41 This happens in the latest trunk as well as the 20080916 release.
16:43 Chouser: well, you're asking it to load nothing from a package named DOESNOTEXIST
16:44 (import 'DOESNOTEXIST) is asking to load a non-existant lib, and does throw an exception
16:45 in your example, it successfully does the nothing you ask for.
16:45 abrooks: Oh, for some reason I thought it would load everything from that package.
16:45 Hrm. Is there a wildcard?
16:46 Chouser: gah, I keep forgetting the difference between import and require
16:47 replace "lib" with "class" in my above statements. :-)
16:47 there is "by design" no wildcard import
16:47 abrooks: Can one introspect on a package to see what classes are in there?
16:48 Chouser: I think I asked that once...
17:05 abrooks: Hm. How does Java support "import foo.bar.*;"? Outside of java.lang.reflect, apparently.
17:05 Chouser: Thanks, BTW.
17:06 * abrooks continues to be baffled by class loading, particularly with regard to JNA.
17:06 abrooks: This is so opaque.
17:06 I haven't found any verbose or debug options that can even tell me where it's looking to determine how I'm failing.
17:09 Chouser: Java does that kind of resolution at compile time. For all I know it could walk the entire directory tree for each wildcard import and index all the class files it finds.
17:11 abrooks: Oh, right, gross... I forgot Java was so... static. :)
17:14 drewr: Is connection pooling built into JDBC yet?
17:14 I started to reinvent the wheel in clojure but I might not need to.
17:15 Chouser: it's built into some servlet containers. not sure about jdbc.
17:15 abrooks: Arg. All of this is moot. The jar file I downloaded from jna.dev.java.net was apparently not loadable like that.
17:15 I would still like better transparency on class loading but I'm rolling now.
17:16 Chouser: loadable like what?
17:17 abrooks: If I new better jargon I may not be having issues here... :)
17:17 Chouser: :-)
17:18 abrooks: I downloaded linux-amd64.jar and put it in my classpath and no contortions of import could load the classes.
17:18 Downloading jna.jar works as expected: (ns user (:import (com.sun.jna Library Native Platform)))
17:18 Chouser: huh.
17:22 does apply work lazily on multimethods?
17:27 no, apparently it does not.
19:17 brweber2: awesome talk at jvm lang summit!
19:48 Chouser: brweber2: rhickey talked?
19:48 brweber2: yes
19:48 was excellent
19:49 Chouser: cool. well received?
19:49 brweber2: I hope so
19:49 Chouser: :-)
19:49 brweber2: very techie crowd and I think they liked it
19:49 fyuryu: I hope he'll be able to lobby for changes useful to Clojure ;-)
19:49 brweber2: he had fewer changes necessary than most
19:49 he just listed 2 things
19:50 fortress and others lobbied for much more
19:53 what changes would you have lobbied for?
19:53 fyuryu: TCO, tagged numbers
19:53 Chouser: I bet tagged numbers was on his list
19:54 brweber2: tail calls and fixnums I think were the two if I recall correctly
19:54 I assume fixnums and tagged numbers are the same thing?
19:56 fyuryu: brweber2: probably. What I mean is: no boxing on nums
19:56 brweber2: yup, same concept
20:28 Chouser: The new print multimethod really increased the amount of runtime support required by boot.clj.
20:42 shoover: Chouser: Because of all the clojure.lang.* names in defmethods?
21:46 Chouser: shoover: those, plus defmulti itself which requires sets and hashes at boot.clj-load time.