#clojure logs

2010-06-16

00:23Licensera wonderful good morning my lispy friends
00:52unfo-what would be the best place for me to read about ^:static (in reference to : http://gist.github.com/440102 )
00:53tomojperhaps http://clj-me.cgrand.net/2010/06/10/primitive-types-support-for-fns-coming-to-a-clojure-branch-near-you/
00:55vIkSiThello all
00:55vIkSiTis there a way to convert a string to a keyword?
00:55unfo-tomoj, did you just google that for me?-)
00:55unfo-tomoj, well any way, thank you, good sir!
00:55tomojI remembered that cgrand had blogged it
00:56vIkSiTfor instance, i'm retrieving a string value from a map - and wuld like to use it as a key to access another map. so "field" should become :field
00:56tomoj,(keyword "field")
00:56clojurebot:field
00:56rbxbx(doc keyword)
00:56clojurebot"([name] [ns name]); Returns a Keyword with the given namespace and name. Do not use : in the keyword strings, it will be added automatically."
00:56vIkSiTargh :)
00:56vIkSiTdidn't think it would be that simple
00:56vIkSiTthanks guys
00:56rbxbxnp.
01:06tomojwow. the slow (fib 38) is 15x slower on my computer than rich's
01:06vIkSiThmm, is there a way to clear a variable definition from the REPL?
01:07vIkSiTas in, if its defined in a particular namespace - can it be "removed" from that namespace?
01:07rbxbxns-unmap
01:07rbxbx(ns-unmap symbol)
01:08dnolennice 1.2 num branch can do 1 billion math ops in < 700ms, no type hints on my laptop.
01:10tomojamerican "billion" or otherwise?
01:12dnolentomoj: 10^9
01:12tomoja math op in less than a nanosecond.. crazy
01:13unfo-woot?
01:14dnolenunfo-: yes, woot :D
01:38aria42k
01:40rbxbxvIkSiT: (ns-unmap *ns* 'symbol) rather.
01:40vIkSiTrbxbx, ah thanks!
01:40rbxbxnp, pardon the initial error ;)
02:22TheBusbytomoj: is there an English speaking country that still uses the long scale for billion? (just curious)
02:25tomojapparently not
03:23vIkSiThmm is there a way to empty a map?
03:23tomoj,{}
03:23clojurebot{}
03:23tomoj:)
03:24vIkSiThaha
03:24vIkSiTI've been poring over methods using reset!, alter and dissoc
03:24vIkSiTgah
03:25tomojyou have an atom?
03:26tomojreset! should be fine
03:26vIkSiTno, a ref.
03:26vIkSiT(dosync (alter mymap {}))
03:26tomojoh, refs don't have anything like reset! afaik
03:26vIkSiTyeah, not that I could find
03:26tomojso you need (alter mymap (fn [_] {}))
03:27vIkSiTI thought {} was a function in this case..
03:27vIkSiTits a persistent array map.. which should act as a fn anyway
03:27tomojoh, wait
03:27tomoj(doc ref-set)
03:27clojurebot"([ref val]); Must be called in a transaction. Sets the value of ref. Returns val."
03:28vIkSiTah
03:28tomoj"(alter mymap {})" would just set the ref to nil
03:28G0SUBvIkSiT
03:28vIkSiTright
03:28vIkSiTG0SUB
03:28G0SUBNeed some help with Enlive...
03:29G0SUBamazing library, but quite complex too :)
03:29G0SUBthe selector syntax is quite difficult to master
03:29Chousukeisn't it mostly just CSS selectors with : in front?
03:30G0SUBI have a bunch of tr nodes, and I want to extract the content of every td node in those tr nodes.
03:30G0SUBChousuke, what's the best way to do the above?
03:31vIkSiTwwmorgan, test?
03:31ChousukeG0SUB: [:tr :td]? or something
03:32vIkSiT,(empty {:a 1 :b 2})
03:32clojurebot{}
03:32tomojoh, or that :)
03:32vIkSiT:)
03:32Chousukethat should select all td elements that are children of tr elements
03:32vIkSiTthanks to wwmorgan who for some reason is speechless :P
03:33G0SUBChousuke, hehe :) I want it like this ((row1td1 row1td2 row1td3) (row2td1 row2td2 row2td3))
03:33G0SUBChousuke, I need the TDs to be grouped by their TRs
03:33ChousukeG0SUB: I suppose you'll need to select all trs first then and map a selector over those?
03:33G0SUBChousuke, right. I am doing that now.
03:34G0SUBChousuke, I am getting the TD nodes, but I need to extract the contents too.
03:37ChousukeG0SUB: the elements should be just maps with :content but I suppose there is a selector for that too
03:38G0SUBChousuke, I am looking for a way to avoid multiple map operations
03:39wwmorganvikSiT: test. Everything works now :-)
03:39vIkSiTwwmorgan, aha :) what was the problem?
03:39bsteuberis it possible to extend a protocol to a single instance?
03:39ChousukeG0SUB: why? map is lazy.
03:39Chousukebsteuber: no.
03:39G0SUBChousuke, I agree. Just looking for a more a compact syntax
03:39wwmorganneeded to register with NickServ
03:39bsteuberChousuke: thx, I thought so
03:40ChousukeG0SUB: maybe you can use comp :P
03:40G0SUBChousuke, hehe
03:41vIkSiTwwmorgan, aah
03:42vIkSiThmm, so whats the best method to serialize a clojure data structure for disk-storage?
03:42vIkSiT(lets say I have a protocol/record combo that needs to be read)
03:44Chousukethe best method depends on what your actual needs are. You can use a real database if you have a lot of data and need speed, or you can just convert the data to a map and print it out if that's enough.
03:44Chousukeyou're going to need custom logic for reading/printing in any case
03:47vIkSiTChousuke, well, I'm actually _building_ a database :) so I have to use file storage of some form. For instance, I have a tree representation that I'd like to serialize for a table into a file..
03:47Chousukewell, hm
03:48Chousukerecords are not serialisable or readable so you'll have to convert them to something
03:48vIkSiTright
03:48Chousukea map might be enough, but of course it's not very efficient.
03:49Chousukefor a speedy database, you'd have to come up with your own binary encoding.
03:49vIkSiTbtw, when you mean "readable - you mean something like binding *print-dup*?
03:49ChousukeI mean you can't use read to read the output of pr on a record.
03:49Chousukethough that limitation might go away eventually
03:50vIkSiTah I see
03:51vIkSiTso in order to convert a data structure to a binary format - what would you recommend reading?
03:51vIkSiT(as in, what clojure functionality could I use best?)
03:51ChousukeI'd recommend using some library but hm :P
03:52ChousukeI suppose that kind of stuff goes to java land; you'll need to use the IO facilities.
03:52vIkSiThehe yeah I guess I'd better use that
03:52Chousukeif you're using 1.2 don't forget clojure.java.io
03:54vIkSiTooh good point
04:00TheBusbycd
04:01TheBusbywhoops, sorry, wrong winow
04:01TheBusbywindow
04:29LauJensenMorning team
04:30TheBusbymorning
04:31fyuryualoha
04:48naeugood morning :-)
05:08tomojI can't get overtone working :/
05:09naeutomoj: join #overtone and I'll see if I can help you...
05:19G0SUBCan Clojure get a CL-ish conditions/restarts facility in the future?
05:21hoeckG0SUB: there is something similar already in contrib, I believe
05:22G0SUBhoeck, error-kit? It doesn't (and can't) have restarts, unfortunately
05:22hoeckright, error-kit
05:24ChousukeG0SUB: I suspect such features would depend on JVM support
05:24hoeckG0SUB: the other one was clojure.contrib.condition
05:25ChousukeG0SUB: unless you want to emulate them with exceptions and other trickery
05:25G0SUBChousuke, I agree. I was wondering if C in C might help.
05:26hoeckcouldn't you emulate restarts with dynamic variables, which are bound down the stack and called immediately when a function raises an exception?
05:26hoeckinstead of actually throwing that exception?
05:26G0SUBhoeck, In theory, yes :)
05:27hoeckand in practice, is that to slow? I thought this is done by either c.c.error-kit or c.c.condition
05:27hoeck*too slow
05:27ChousukeJVM exceptions can be pretty fast if they're preallocated
05:29ChousukeIIRC John Rose mentioned in his blog that the most time is spent creating the stacktrace when an exception is allocated
05:29Chousukeand if an exception is preallocated the JVM can in some cases compile a throw into a simple goto
05:30G0SUBChousuke, the problem is that with restarts, you can't unwind the stack.
05:33ChousukeI suppose technically the JVM could support continuations and restarts, they just don't-
05:35G0SUBChousuke, may be some day :)
05:38Chousukehttp://blogs.sun.com/jrose/entry/continuations_in_the_vm
05:39ChousukeIt seems unlikely to happen though.
06:52defnthe idea of tries, applied to all other sorts of disciplines like evolutionary psychology has far reaching consequences for the validity of their sciences
06:53silveenwhen ordering the Joy of Clojure book with MEAP, the ebook is drm free I hope?
06:53defnnamely, that it enhances it. it seems a systematic methodology for subdividing groupings of events
06:54defnsilveen: it is i believe -- it may have your name on it
06:54defnlike "This PDF Generated for: silveen"
06:54defnbut that's it
06:54silveenokey defn
06:55silveenI just cba with alot of "do view this, please visit this website, follow 300 steps, download, fail, call customer support, pay $100 in phone fees, follow 50 more instructions, reinstall OS, do everything again, read once and then "thanks for shopping at yahoo"
06:55clojurebot:negative/num-1 + :positive/num-1 = :zero/zero
07:36bartjhi, compiling clojure-contrib fails because of a test failure in the clojure.contrib.test-jmx
07:43hugoda
07:43clojurebota is b
07:44serp_b
07:45rhickeyso, has anyone tried the num branch?
07:45rhickeyhttp://github.com/richhickey/clojure/commit/6ab3e4cd672092823a04c944210a23c29142785d
08:06dnolenrhickey: did you see my comment about areduce and amap in the num branch?
08:06rhickeydnolen: no
08:06dnolenrhickey: they still use unchecked-inc
08:06rhickeydnolen: ah
08:06rhickeyso much for test coverage :(
08:13rhickeydnolen: fixed, thanks
08:13serp_context: server for computer game. problem: I have store a bunch of info about a game character in a ref. I use add-watch to catch when a modification is done to a character, and then check compare the old and new value of every attribute of the character to see what changed and sends messages to all client about the update. this feels very clumsy as there are a lot of compares. might it be a better design choice to have each attribute as a ref?
08:15AWizzArdserp_: can't you signal something at the place where you change the specific field?
08:16AWizzArdSome code currently is handling the attribut update...
08:16AWizzArd+e
08:17serp_I don't want to require the behaviour code to understand how the network updates work
08:17dnolenrhickey: num branch is impressive!
08:17dnolenrhickey: does aset need fixing as well?
08:17serp_I want (set-pos player1 14 15) to both update the server state AND, as a side effect, send this update to all clients
08:18AWizzArdserp_: the behaviour code could trigger an action... :strength-updated
08:18tomojref proliferation seems dangerous to me
08:18rhickeydnolen: how so?
08:20dnolenrhickey: lemme check, putting together an example of what I'm seeing
08:24dnolenrhickey: sorry. no everything seems to be working. was calling rand-int and missing a cast to long when inserting with aset.
08:24rhickeywhy did you need cast?
08:26dnolenrhickey: aset for an array of longs
08:27rhickeydnolen: still, why, what was happening? couldn't resolve? there should be little need for casts in num
08:27dnolenrhickey: http://gist.github.com/440593
08:28rhickeywhat exception
08:29dnolenrhickey: no matching method foudn
08:30dnolengist updated
08:40dnolenrhickey: hmm, it seems like I'm seeing perf regression again on (doall (map inc (range 1000000))) in num branch.
08:42serp_AWizzArd: I guess... but that would be the same as having a bunch of refs and add-watches, only not automagical
08:43rhickeydnolen: not here, make sure you do: (dotimes [_ 10] (time (count (doall (map inc (range 1000000))))))
08:46dnolenrhickey: you're right, issue seems to be around the use of into? http://gist.github.com/440617
08:46AWizzArdrhickey: I sometimes do the same, using count to enforce map to fully traverse its input list. But why do you use doall here? Count should be enough, shouldn't it?
08:47rhickeyAWizzArd: I just wrapped what dnolen already had
08:49dnolenrhickey: erg, disregard last gist, that's the same perf as pre-num, sorry.
08:49rhickeydnolen: and your vector one times doing it 10x, not once
08:50rhickeydnolen: should be: (dotimes [_ 10] (time (count (doall (map inc bigv))))) for apples to apples vs the range
08:54dnolenrhickey: yup
09:12AWizzArd,(clojure.lang.MapEntry/create [1 2])
09:12clojurebotjava.lang.IllegalArgumentException: No matching method: create
09:12AWizzArdIs that already fixed in recent versions?
09:13AWizzArd,(binding [*print-dup* true] (println (first {1 2})))
09:13clojurebot#=(clojure.lang.MapEntry/create [1 2])
09:33rhickeynice: http://www.infoq.com/news/2010/06/azul_ori
09:35silveenDoes anyone know if Mannings ebook server being down is a known issue or if it just hates me?
09:39fogussilveen: I was just able to download the latest copy of the award-wining MEAP, "The Joy of Clojure"
09:40Chousuke:P
09:40Raynesfogus: No vested interests there. ;)
09:40silveenyeah I bought that a few hours ago
09:40silveen(more money to you)
09:40silveenbut I can't download it, server dw.mannings.com blah blah doesn't respond
09:41fogushmmm. did you follow the link in the email?
09:41silveenno I just took a random url from thin air
09:41silveenofc I follows the instructions in the email
09:41silveenfollowed*
09:42RaynesWell, no need to be mean. :\
09:43fogusok then
09:43silveensorry if it was taken as an offensive statement :(
09:43RaynesIt's not his fault Manning borked their URL. :p
09:44fogusthe MEAP update that I downloaded came from a different source than dw.mannings.com. So perhaps that server is indeed down.
09:44fogussupport@manning.com
09:44silveendw.manningpublications.com even
09:45silveenyeah I guess I'll throw them a mail
09:46AWizzArdrhickey: indeed, interesting link, thx
09:46rhickeyso, who's ready for (= 1/2 0.5) => false, (== 1/2 0.5) => true
09:47AWizzArdwhy not the other way around?
09:48chouserwhew. I don't think that would cause problems with any real code I have.
09:48AWizzArdUntil now = was similar to equalp, and now you want it to be more like eql?
09:48rhickey= becomes type aware, == is equivalent values, = would be used in collection logic as well
09:48chouserwhew. I don't think that would cause problems with any real code I have.
09:48rhickeyAWizzArd: I don't want to draw connections to the CL stuff
09:48AWizzArdSo, == will be the new equalp while = will be the new eql, and identical? stays eq
09:49rhickeyAWizzArd: contrast with CL will not help with this
09:49AWizzArdAnyway, it is a semantic change.
09:49rhickeyAWizzArd: yes, num branch has semantic changes
09:49AWizzArdI also don't think that my code specifically would have problems with that thought.
09:50chouser== is currently just for numbers. does that change?
09:50rhickeychouser: nope, still for numbers
09:50AWizzArdI would vote for == taking all objects, and do a deep comparison of those.
09:51rhickeyAWizzArd: having a variety of equality logic really complicates things.
09:51G0SUBrhickey, Is a CL-like conditions/restarts system possible in Clojure in the future?
09:51AWizzArdSo, (= [0.5] [1/2]) ==> true or false?
09:51rhickeyG0SUB: no
09:51rhickeyAWizzArd: false
09:51AWizzArdAnd (== [0.5] [1/2]) ==> IllegalArgumentException?
09:52rhickeyAWizzArd: who is really doing things like that? I only find it in test code
09:52rhickeyAWizzArd: exception, yes
09:52AWizzArdDon't know, I only speculate that it may sneek in somehow *shrugs*
09:52chouserno, == is for numbers, you wouldn't use it on collections like that.
09:53rhickeychouser: but people may ask for it if = no longer did numeric equivalence
09:54chouserit feels to me like in num the number types are more separated. less automatic conversion between types, etc.
09:54rhickeychouser: not really, there are in fact many more automatic conversions
09:54chouseroh.
09:55rhickeyints now match long params, and vice versa (with check)
09:55rhickeyfloat match doubles
09:55chouserah, I see.
09:55rhickeyall numeric inits of locals are coerced to wither long or double
09:55rhickeyeither
09:55chouserI should keep my mouth shut until I read the commits more carefully.
09:56rhickeyIt is quite a substantial change, and yet compatible with contrib and argos, with the exception of one long-integer test in Incanter
10:08AWizzArdchouser: are your 2-3 Fingertrees mostly completed?
10:11chouserthey work, but I have performance and api changes that need to be made before they're generally useful.
10:12chouserand I need to compare/contrast with the Functional Java version of finger trees as well.
10:17AWizzArdchouser: are the FJ Fingertrees fully persistent?
10:17AWizzArdOr only partially?
10:18chouserI assume so. the paper that defines the term 2-3 finger tree presents a fully persistent implementation
10:19mcavdo any of you know where to find (and disable) the setting that turns "fn" into "ƒ" in emacs?
10:20Chousukemcav: that's not a default, so check your init scripts?
10:20mcavok, will do
10:23mcavah, found it. It was in the "emacs starter kit" default settings. thanks.
10:43AWizzArdcgrand: ping
10:44cemerickG0SUB: check out error-kit in clojure.contrib
10:44cemerick(= 1/2 0.5) => is going to flip some people out
10:45cemerickespecially around map lookups
10:46chouserI think that's where this will make more sense.
10:46chousermap lookups currently use equality that is neither = nor ==
10:46AWizzArd,(get {1/2 0} 0.5)
10:46clojurebotnil
10:46AWizzArd,(get {0.5M 0} 0.5)
10:46clojurebotnil
10:47AWizzArd,(= 0.5 1/2 0.5M)
10:47clojurebotfalse
10:47AWizzArduh
10:47AWizzArdthat last one surprises me
10:47AWizzArd,(= 0.5M 0.5 1/2)
10:47chouser,(= 1/2 0.5)
10:47clojurebottrue
10:47clojurebottrue
10:47chouser,(= 0.5 1/2)
10:47clojurebottrue
10:47chouserheh
10:47AWizzArd,[(= 0.5M 0.5 1/2) (= 0.5 1/2 0.5M)]
10:47clojurebot[true false]
10:48chouserwhee!
10:48AWizzArdI must be blind, I don't see where I have the typo...
10:49cemerickAWizzArd: no typo -- semantics of = depend on the callee
10:49chouser,(= 0.5 1/2)
10:49clojurebottrue
10:49chouser,(= 0.5 1/2 0.5M)
10:49clojurebotfalse
10:49cemerickor, I should say, semantics of .equals depends on the callee, and = uses .equals
10:50AWizzArd,[(= 0.5 0.5M) (= 0.5M 0.5) (= 1/2 0.5) (= 0.5 1/2) (= 1/2 0.5M) (= 0.5M 1/2)]
10:50clojurebot[true true true true false false]
10:51serp_what is M suffix?
10:51chouser,(type 0.5M)
10:51clojurebotjava.math.BigDecimal
10:52AWizzArd,5.3278569832756932875623985638562357
10:52clojurebot5.3278569832756935
10:52AWizzArd,5.3278569832756932875623985638562357M
10:52clojurebot5.3278569832756932875623985638562357M
10:52serp_,(type (0.5M + 4))
10:52clojurebotjava.lang.ClassCastException: java.math.BigDecimal cannot be cast to clojure.lang.IFn
10:52serp_,(type (+ 0.5M 4))
10:52clojurebotjava.math.BigDecimal
11:03tridd3llDoes anyone have a current MEAP discount code for Clojure in Action? I can't find one in any email from Manning that I still have.
11:06fogusinfoq35 was working as of a few days ago
11:07vu3rdd,quit
11:07clojurebotjava.lang.Exception: Unable to resolve symbol: quit in this context
11:07vu3rddoops.. too much of swank usage. :-(
11:09tridd3llfogus: thanks, I already bought your book and I'm just trying to fill out my library... I'll try that code
11:12tridd3llfogus: still works, thanks!
11:12fogusyay
11:17arkhunlike agents sending off agents, is there anything blocking futures from firing off other futures?
11:17arkh(outside of something trying to realize a future's value)
11:18AWizzArdwb rhickey
11:18rhickeysorry, I lost the internets here
11:18AWizzArdyes
11:18AWizzArdsomething interesting about =
11:18AWizzArd,[(= 0.5M 0.5 1/2) (= 0.5 1/2 0.5M)]
11:18clojurebot[true false]
11:18AWizzArd,[(= 0.5 0.5M) (= 0.5M 0.5), (= 1/2 0.5) (= 0.5 1/2), (= 1/2 0.5M) (= 0.5M 1/2)]
11:18clojurebot[true true true true false false]
11:19AWizzArdIn NUM I guess they all eval to false.
11:36rshcan you specify many to many relationships with clj-record?
11:43AWizzArd(goto 30)
11:51danlarkincemerick: tisk tisk tisk
11:52cemerickheh, that's just the way it goes sometimes :-)
11:52cemerickat least it's locked away neatly in a macro
11:53danlarkinI "had" to do it once
11:54danlarkinI had to refactor a whole bunch of code to not need it anymore
11:54danlarkinbut I was happier
11:54chousercheck the return value of the try to see if the recur must be done?
11:55cemerickchouser: yup, with an (Object.) sentinel to request a recur.
11:56cemerickdanlarkin: in this case, I want to rapidly beat a long series of attachment PUTs into a couchdb document, without restarting three levels out.
12:02danlarkindang
12:03danlarkintricky
12:03cgrandAWizzArd: pong
12:12AWizzArdcgrand: Hi. Do you remember how transients work?
12:12AWizzArdinternally I mean
12:25jkkramerrhickey: (time (dotimes [_ 1e5])) takes over second on the num branch. modifying dotimes to cast its second arg as long fixes it, though i don't know if that's the proper fix
12:27jkkrameroh, he's not here
12:29cgrandAWizzArd: yeah, sure why?
12:30AWizzArdcgrand: while (find {:a 1, :b 20, :c 300} :b) ==> [:b 20]
12:30AWizzArdwith transients I get: (find (transient {:a 1, :b 20, :c 300}) :b) ==> clojure.lang.PersistentArrayMap$TransientArrayMap cannot be cast to java.util.Map
12:31AWizzArdIs there a good reason why find should not work on transients?
12:34cgrandAWizzArd: no good reason, and in the same vein transient vectors don't support peek
12:39chouserare the map entries in transient themselves mutable?
12:45cgrandchouser: entries are created on the fly
12:48clajI try to lein deps in a fresh compojure project according to compojure.orgs getting started, but it says it can't download compojure-0.40-RC3.pom, what to do?
12:51clajor, why can't lein reach any of the repositories?
12:54charliekiloclaj: just to make sure, my lein project references [compojure "0.4.0-RC3"]. i.e. any chance you forgot the '.'?
13:02nickikhallo
14:14yacinif i have a function defined later on in a file, is there anyway to use it before it's defined?
14:14yacini have some globals that require the use of a function
14:14yacinand it makes more sense for the global to be at the beginning of the file
14:14yacinrather than at the end where the function is defined
14:15chouser(doc declare)
14:15clojurebot"([& names]); defs the supplied var names with no bindings, useful for making forward declarations."
14:15yacinthanks!
15:50chousercemerick: your twitter link failed for me
15:50cemerickreally?
15:51cemerickchouser: you mean http://bit.ly/cj89uz ?
15:51chouserhttp://muckandbrass.com/web/display/~cemerick/2010/06/16/The+beauty+of+letterpress+and+craft+and+old+arts+faithfully+renewed reports The proxy server could not handle the request Apache/2.2.12 (Ubuntu) Server at muckandbrass.com Port 80
15:51cemerickhrm -- keeps loading OK here :-/
15:53chousernice post though. works fine at http://muckandbrass.com/
15:54cemerickthanks -- I'm bouncing the sorry thing
15:57cemerickOK, it shouldn't have problems until, oh, 20 minutes from now.
15:57serp_I want to write a tcp server for many (> 10) simultaneous long session clients. Any tips for a noob on how to manage the sockets in a way fit for clojure?
15:58chouserserp_: I've read recently that one thread per socket is not a bad way to go. Depending on your application it is often the simplest implementation too.
15:58chouseror perhaps two threads -- one for reading and one for writing?
15:59serp_nDuff: what are conventional techniques for handling sockets in clojure?
16:01nDuffserp_, clojure.contrib.server-socket's create-server is probably conventional enough -- one thread per socket
16:02serp_I'll have a look. thanks!
16:05sclvanybody got a minute to help walk me through a basic setup of a dev environment (using swank-clojure)?
16:11alpheusI just learned it myself, so I'll be glad to help if I can.
16:11tridd3llsclv: no time now, but I documented my last setup here: http://riddell.us/ClojureSwankLeiningenWithEmacsOnArch.html
16:12tridd3llsclv: might only be relevant for linux though
16:14sclvthanks -- that link looks sufficient to get me going
16:36briancarperIt looks like numbers behave more sanely as hash keys in the num branch. This is good.
16:38briancarper,{(int 1) :int (long 1) :long (bigint 1) :bigint}
16:38clojurebot{1 :int, 1 :long, 1 :bigint}
16:38briancarperNo more of that to worry about.
16:45qbgHmm, on the num branch (bit-shift-left 1 333) returns 8192
16:46qbgSince math now throws on overflow, shouldn't that also throw?
17:15arohnerhas anyone had success using eclipse + CCW to debug a clojure project?
17:15arohnerI can remote attach, pause and see a stacktrace, but it seems to be ignoring my breakpoints set in clojure code
17:38serp_I'd like to allocate an array of 5 bytes. how do I do this? (let [buffer (new ???
17:38qbg,(make-array Byte/TYPE 5)
17:38clojurebot#<byte[] [B@1333295>
17:38serp_what is /TYPE about?
17:39qbgTo get the class object of the primitive type byte
17:39serp_ah
17:40serp_does / retrieve static members?
17:40qbgYes
17:40serp_ok. thanks
17:48mmarczykmorning (ugt)
17:49serp_what could be the reason that makes my clj find clojure.contrib.server-socket but not clojure.contrib.json ?
17:50qbgHow new is the contribs version you are using?
17:50mmarczykserp_: what do you mean by "find"?
17:50nDuffserp_, what version of clojure-contrib are you running?
17:51serp_mmarczyk: Exception in thread "main" java.io.FileNotFoundException: Could not locate clojure/contrib/json__init.class or clojure/contrib/json.clj on classpath <-
17:51serp_I'll check what version, sec
17:51serp_I use 1.1.0 clojure + clojure-contrib
17:52mmarczykah, I think there were two json-related namespaces back then, let me check...
17:52mmarczykyup, json.read & json.write
17:52mmarczykno json namespace
17:53serp_hm you're right
17:53serp_aha there is a separate api reference for 1.1.x
17:53mmarczykright :-)
19:17eslick_Anyone here familiar with clockwise?
19:18eslick_And dealing with the conflation of eclipse java and lein-based clojure projects?
19:20eslickI should say counterclockwise...
23:56technomancydid we ever get a way to AOT-compile a single namespace without having the namespaces it requires get AOT'd?