#clojure logs

2009-01-11

00:38hiredman1d8
00:39mfredricksonhiredman: 6
00:39mfredricksonyou slay the elf
00:39hiredman1d8
00:39clojurebot6
00:40mfredricksonjinks!
00:51arohner1d8
00:51clojurebot3
00:54hiredmanman, clojurebot totally needs to do markov chains generated from channel logs
01:34vogelrn1d8
01:34clojurebot8
01:34vogelrn1d10
01:34clojurebot6
01:34vogelrn1d1000000000000000000000000000
01:34vogelrnhmmmm
01:34vogelrnunfortunate :P
01:38hiredmanhmm
01:39vogelrnI was expecting intmax
01:39vogelrnnot silence
02:44hiredmanis there a prefered mimtype for clj files?
02:50hiredmanapplication/x-clojure it is
04:38rryanHi -- does clojure have call/cc?
04:39hiredmannope
04:40rryanalright.. google didn't turn up anything useful so I assumed not. Any workaround? Any reason why?
04:44kotarakrryan: }:-) Why should it have call/cc?
04:45rryan:)
04:45kotarakrryan: I suspect that this is not easy to implement, things Clojure allows easy calls to Java.
04:45kotaraks/things/since/
04:45rryanyea -- the more I think about it, it sounds hard
04:46rryanFor fun, I was going to rewrite CONSPIRE (a scheme time sharing system) in clojure.
04:46kotarakYou'll need either you own call stack or other means to implement it, which makes interop hard, or you have to do bad things like copying stack in C and such.... (Which I don't even know whether it's possible in Java or not)
04:46rryanand it relies pretty heavily on call/cc
04:49kotarakthat's not the right thing I guess. ;) :conspire: a conspiracy theory generator, for the conspiracy theorist in a hurry
04:49hiredmanrhickey has said on the google group that "Clojure is not going to provide continuations
04:49hiredmanany time soon"
04:50rryangotcha
04:50hiredmanbut I don't see him giving a reason
04:50hiredmanbut I would suspect that kotarak is right
06:17asbjxrnIs there a way of getting "unchecked-add" behaviour for floats?
06:19Lau_of_DKGood afternoon everyone =)
06:19kotarakHi Lau.
06:43asbjxrnTip: (+ (float 0.1) (float 0.1) (float 0.1)) is about 9 times slower than (+ (float 0.1) (+ (float 0.1) (float 0.1)))
06:57Chousukethe last float probably gets reboxed or something as IIRC + uses reduce for more than 2 arguments.
08:34rfgpfeiffer'#=(symbol "test symbol")
08:35rfgpfeifferi think i found a bug
08:35kotaraksymbol does not validate the string, in case that's what you want to say.
08:36rfgpfeiffer#=(keyword "key word")
08:36rfgpfeifferthis works as expexted
08:40rfgpfeiffersymbol just creates a symbol with the name "test symbol", the problem is somewhere else
08:43rfgpfeiffer(symbol "test symbol") works fine also
08:44kotarakIt's somehow the combination of ' and #=.
08:44Chouser#= isn't meant to be used directly
08:45rfgpfeifferit seems like symbols are parsed again after read time
08:48Chousukecalling symbol with arguments that would result in unreadable symbols is unsupported anyway, as far as I know
08:50kotarakI think it's on the issue list to implement validators.
08:50Chousukeyeah
08:53ChousukeI figured out the following: symbols must not contain whitespace, must not start with numbers , # or /; must not end with / (exception: just '/ is allowed), can't contain ', or the comma (since it's whitespace).
08:54Chousukeanything missing there? :/
08:54kotarakmaybe ()? What does the reader do here: foo(+ 1 2)
08:54Chousukesymbols containing / among other valid characters are allowed but cause problems.
08:54Chousukeah, true
08:55Chousukealso must not start with : since that's for keywords
08:56Chousukekeywords have similar rules but are a bit less restricted because they always start with :, so the "must not start with" rules can be ignored
08:57rfgpfeifferwhat about ^, @,%, and ~?
09:01rhickeyhttp:/clojure.org/reader says "Symbols begin with a non-numeric character and can contain alphanumeric characters and *, +, !, -, _, and ? "
09:01rhickeyhttp://clojure.org/reader
09:04rhickeythe problem with '#=(symbol "test symbol") is that it tries to embed the symbol with the name "test symbol" as a constant in the compiled code. Constants are stored readably, and symbols using just their print representation, so in restoring the constant one object is read in from the string "test symbol" is read, yielding the symbol test
09:05rfgpfeifferokay
09:05Chousukerhickey: can you clarify if / should be allowed in symbol names other than '/? Allowing it seems to cause problems. :/
09:08rfgpfeifferperhaps (.toString (symbol "this symbol")) should return |this symbol|
09:08Chousuke(namespace 'a/a/b) returns a/a but a namespace like that won't work; even if you create it and def the b var, trying to evaluate a/a/b says that the namespace a/a does not exist
09:22Lau_of_DK(doc interleave)
09:22clojurebotReturns a lazy seq of the first item in each coll, then the second etc.; arglists ([& colls])
10:21asbjxrnSo I've spent a good chunk of the weekend translating http://www.dgp.toronto.edu/people/stam/reality/Research/pdf/GDC03.pdf to Clojure. (Fluid dynamics for games.)
10:21asbjxrnAnd I only get 1 frame/sec for a 100x100 grid...
10:22Chousuke:/
10:23asbjxrnHardly convincing smoke effects at that pace.. (Very small movements from frame to frame as well.)
10:24Chousukehave you gotten rid of all reflection in your app already?
10:24asbjxrnAnyone feel like giving it a shot?
10:25Chousukebut that kind of stuff looks like it might be easier to use java to write the parts that need speed and then tie it all together with clojure.
10:25asbjxrnNot all. I'm not sure hot to get rid of the last parts. Tried using YourKit to figure out where the time went, but...
10:27asbjxrnI agree. Not what I would expect Clojure to excel at, but I would have hoped it would be reasonably fast.
10:27asbjxrnI'm also not using idiomatic clojure, I guess. I'm using java arrays for the data.
10:29Chousukedo you have the code on github or something?
10:29karmazillaidea: what if PersistentStructMap$Def implemented IFn and calling it would yield an instance of that struct with the parsed arguments as values?
10:31Chousukekarmazilla: you mean (defstruct foo ...) and then (foo ...) -> structmap?
10:31asbjxrnIt's real ugly, do they have anonymous accounts? :)
10:32Chousukeasbjxrn: gist.github.com
10:32karmazillaChousuke: yes
10:32Chousukeasbjxrn: the best pastebin I know :D
10:32Chousukeasbjxrn: because even the pastes are git repos
10:33Chousukeyou can fork them and import their history into a real git project if the gist ends up growing into a real app
10:36asbjxrnIt's a bit too late here now. I'm off to bed. I'll check it out tomorrow.
10:40bOR_how would you solve this? I've a regex matcher, and when I call (.find mymatcher) it will return true until it can no longer find any matches in the string, and then it starts returning false.
10:40bOR_I want the number of trues.
10:40bOR_take-while pred coll seemed nice, but warns me not to use a pred that has side-effects.
10:40bOR_and I toyed a bit with trying to turn (.find mymatcher) into a lazy-cons
10:41Chousukeisn't there a re function that returns a seq of matches
10:41Chousukecall count on that.
10:41bOR_its not the standard java regex engine.
10:41bOR_brics automaton.
10:42bOR_(unless I misunderstood your answer)
10:44Chousukeah. hmm
10:44bOR_ah.
10:44bOR_got the lazy-cons to work
10:44bOR_that seems to be it
10:44bOR_(defn lazy-find
10:45bOR_ [matcher]
10:45bOR_ (lazy-cons (.find match) (lazy-find matcher)))
10:45bOR_.
10:45bOR_a take 10 on that works nicely
10:45bOR_so now I might be able to tag on a (count (take-while true (lazy-find match)))
10:46bOR_victory :)
10:46achim_pbOR_: you might be able to use repeatedly (count (take-while identity (repeatedly #(.find ...)))) - didn't test that though
10:47bOR_(take-while #(= true %) (lazy-find match)) did work
10:47bOR_but violates the 'pred cant have side-effects rule though'
10:47bOR_not sure how much I should worry about that.
10:47bOR_I'll look at repeatedly.
10:48achim_pnot sure about side-effects and take-while either, but repeatedly does allow them explicitly
10:48bOR_(take 10 (repeatedly (fn [] (.find match))))
10:48bOR_noticed.
10:48bOR_that works.
10:49bOR_thanks!
10:49bOR_getting tired. not sure if it works :)
10:49bOR_but thanks for pointing out repeatedly.
10:50asbjxrnhttp://gist.github.com/45724 <- Ugly, slow, broken code.
10:52achim_pbOR_: you're welcome. just looked up the code for repeatedly - looks like a generalized version of lazy-find :)
10:53bOR_gracias.
10:53bOR_man. I'll summarize the mess I went through on the forum one of these days :).
10:53bOR_but it seems all is working out eventually.
10:54bOR_(was working on a bottleneck in a simulation model in clojure)
10:58achim_pbOR_: thanks for pointing me to brics automaton, i've been looking for a regex engine with complement support!
10:59bOR_nice :).
11:00bOR_what does complement mean in regard to regex engines?
11:00bOR_saw that function, couldn't figure out what it did from the description?
11:01bOR_I am using the union function though, which can merge my regexs before I let it getfinitestrings
11:01bOR_(whenever I can't calculate getfinitestrings in an easier way)
11:02achim_pnon-occurence of patterns - most regex engines can't express that
11:05bOR_ah. cool, so basically the opposite of the sequence space that can be presented.
11:05bOR_hmm. opposite.. better is to say the rest of the sequence space.
11:11achim_pi knew their mona tool a little and that it was good in minimizing state machines, but wasn't aware there was a java regex implementation with that built in. pretty cool
12:43jackyHi - I have a question about the threadlocal semantics of vars
12:43jacky(def k 10)
12:44jackynow, k is bound to the value 10.
12:44jacky(.start (Thread. (fn [] (def k 5)(println k)))) -- this should bound k to the value of 5 only within the thread.
12:44hiredmanno
12:44hiredmandef is global
12:44jackyBut when I check for the value of k in repl, it shows 5
12:44kotarak(doc binding)
12:44clojurebotbinding => var-symbol init-expr Creates new bindings for the (already-existing) vars, with the supplied initial values, executes the exprs in an implicit do, then re-establishes the bindings that existed before.; arglists ([bindings & body])
12:45jackyI see.. The threadlocal semantics apply on if you use binding?
12:45kotarakAnd there is with-local-vars, but I never used that one up to now.
12:46hiredman(doc with-local-vars)
12:46clojurebotvarbinding=> symbol init-expr Executes the exprs in a context in which the symbols are bound to vars with per-thread bindings to the init-exprs. The symbols refer to the var objects themselves, and must be accessed with var-get and var-set; arglists ([name-vals-vec & body])
12:48jackyso, to create a threadlocal binding, we should use binding
12:48kotarakbinding worked very well for me up to now.
15:05dreish,(#(identical? (rest %) (rest %)) [1 2 3])
15:05clojurebotfalse
15:10hiredman ,(#(identical? (rest %) (rest %)) (seq [1 2 3]))
15:10hiredmanhmmm
15:11hiredman,(#(identical? (rest %) (rest %)) (seq [1 2 3]))
15:11clojurebotfalse
15:13eyerisUsing Maven2 Jetty plugin, where do I put my clojureql.jar file? I've tried specifying -Djetty.class.path="/full/path/to/clojureql.jar" but I still get a classnotfound exception.
15:14eyeris(this is for use with Webjure, btw)
15:38Chouser,(#(identical? (rest %) (rest %)) (map identity [1 2 3]))
15:38clojurebottrue
15:42danlarkinSo in an object-oriented language I would be saying like, you have to pass me an object here that has at least one of these 4 methods. Would a reasonable analog in clojure be saying you have to pass me a namespace that has one of these 4 functions named in a specific way?
15:43danlarkinor should I use gen-interface and make them use proxy
15:44hiredmanpass me a hash that has at least one of these four keys
15:46hoeckdanlarkin: or pass a function that does one of these 4 things
15:46hiredmanhoeck: but how would you know which of the four the function does?
15:46danlarkinhoeck: well the 4 different functions get executed at different times... like pre_ and post_ hooks etc
15:47Chouserhash-map of functions?
15:47hiredman^-
15:47danlarkinyeah, the hash of functions might be a good way
15:48hiredmanand you can do all that fun hash destructuring
15:48Chouserthat's essentially what irefs do now. (agent foo :validator fn)
15:49ChouserI think passing a namespace would be pretty rough on both producer and consumer
15:49Chouserclojure.zip uses a data object with several functions attached as metadata
15:53danlarkinyeah I think a good way to do this will be have them pass in a hashmap of functions, thanks hiredman and Chouser
15:56lsanthahello
15:57lsanthaI'm testing clojure on an experimenta java platform
15:58lsanthaand I noticed that the bytecode generated by clojure contains dead code which makes it fail in this env
15:59lsanthais it possible to fix this problem? Where shold I post a bugreport?
16:03Chouserlsantha: post it to the google group
16:04lsanthaok, thanks
16:04cpfrhey how easy is it to use Clojure for mobile phone apps?
16:04cpfrsince i kinda hate coding in java
16:05hiredmans know
16:05hiredmaner
16:06hiredmanbe the first to do it, and let us know
16:07Chousercpfr: it's now working for applets and android, so you have a fighting chance at getting j2me working.
16:07cpfrChouser, awesome!
16:08cpfrhiredman, i barely know how to do it with java, but will do
16:40lsanthaChouser: I postgred it but not showing up, is waiting in a moderation queue?
16:41lsantha* I posted it ...
16:41Chouserlsantha: yeah, if it's your first post, it'll be held (to prevent spam)
16:41lsanthaok
16:41Chouserwhich may work to your advantage, because it means rhickey will have to see it.
16:41Chouser:-)
16:42lsantha:-)
16:43lsanthaI also tried a sort of a fix which fixed one part of the problem
16:43lsanthamaybe it's not so hard to fix it for the authors
16:44lsanthaand for mobile platforms such things maybe be important even if for Java SE they go unnoticed
16:44rhickeylsantha: what's JNode?
16:44lsanthait's an experimental OS written in Java
16:44lsanthahttp://www.jnode.org/
16:46rhickeyI think it should be tolerant of dead bytecode
16:46lsanthaI think you are right
16:47rhickeyClojure definitely relies on the VMs to do last-mile optimization
16:48lsanthathat's one place for fixing the bug, but also posted it to you just in case you are interested
16:50rhickeylsantha: thanks. If you want, you can create an issue for it so it won't get lost, bit not a top priority right now
17:06Lau_of_DKHow do I debug a "No matching clause" ?
17:07karmazillaChouser: textjure future?
17:07ChouserLau_of_DK: that's from a condp?
17:07Lau_of_DKChouser: No, its from my run macro, or somewhere after it
17:09ChouserLau_of_DK: I think condp is the only form that throws that exception.
17:09Lau_of_DKThen you've answered my question, thanks CHous' :)
17:10Chouserkarmazilla: hopefully textjure has more future than it does past.
17:11rhickeypoll: Clojure supports CL-style nil-punning, how much would you miss it if it didn't?
17:11Chouserlike (cons :foo nil) ?
17:11Chouserand we'd have to say (cons :foo ()) instead?
17:11rhickeyChouser: no, like (if (rest x)...), using seqs fns as predicates etc
17:12Lau_of_DKrhickey: Counter-question: What would I gain if I lost nil-punning?
17:12karmazillaChouser: hehe, that's a way to put it :) I fiddled with it a bit and sort of got it to save the one file you opened with it
17:12rhickeyLau_of_DK: one poll at a time :)
17:12Lau_of_DKhehe, alright
17:12danlarkinrhickey: so (rest [1]) would be what
17:12Chouserso we'd have to say (if (series? (rest x)) ...) instead?
17:12rhickeydanlarkin: opaque, seq would work on it
17:12Lau_of_DKThen I cant answer due to lack of polls, I think I'd miss it
17:13rhickeyChouser: (if (seq (rest x)) ...)
17:14hiredman:(
17:14rhickeydanlarkin: (seq (rest [1])) -> nil
17:14ChouserI suppose (rest x) would then evaluate to something true in cases where it currently is nil?
17:14rhickeyChouser: yep
17:15Lau_of_DKNow I know I'd miss it
17:15hiredman:(
17:15danlarkinyeah I'm -1
17:15ChouserI think that'd break a lot of my code.
17:15rhickeyhiredman: no voting twice :)
17:16hiredmanrunning a markov chain deal on the irc logs a channel where people paste code does not get you english output
17:16Chousukerhickey: so what would this change enable?
17:16rhickeyChouser: one possibility, for rest, if for rest to be defined as (seq (tail x)) where tail is the new rest
17:16ChouserI suppose I could get used to it. "Public" api functions already have to use (seq x) generally to allow empty containers to work right...
17:16rhickeyChouser: exactly, mush code already does (seq coll)
17:17rhickeymuch
17:17rhickeyThere are basically two ways to support streams
17:18rhickeyfirst is bifurcation, a second set of all seq fns for streams, both can be generated from a single definition
17:18rhickeysince: (def map (comp seq map-stream))
17:19rhickeysecond method is change to seq semantics, rest would return a logical coll, not an ISeq/nil
17:19rhickeyseq still returns ISeq/nil
17:19rhickeyfirst is the same
17:20rhickeythen seq/stream fns can return either seqs/streams or other things
17:20rhickeyone set of fns
17:20rhickeythe new seq model can support fully-lazy seqs, not possible now
17:20Chouserother functions might need 'seq' around them too, though, right? filter, map, etc. if you want to test for empty result.
17:20rhickeysince Delay could implement Seqable, you could write seq fns returning delays
17:21rhickeyChouser: yep
17:22Chouserespecially without having a sense of what benefit I'd get from interacting directly with streams instead of seqs, the first way sounds better.
17:22Chousermy existing code works, new code doesn't need more (seq ...) sprinkled everywhere, and I can use map-stream if I know I want it.
17:22rhickeystream versions of fns likely to be 2-4x faster
17:23Lau_of_DKhmmm :)
17:23rhickeyif everyone chooses the stream verions all the time they'll have seq calls when needed anyway
17:23Lau_of_DKAnd there's no way to obtain that speed increase with this re-design ?
17:23Chouserclojure's already too fast for me.
17:23rhickeyheh
17:24rhickeyLau_of_DK: speed is due to essential difference between seqs and streams
17:24rhickeythis is just an api thing
17:24Lau_of_DKoh... I think thats a very heavy argument
17:24rhickeyIO likely to be exposed only as streams
17:24rhickeyditto queues
17:25Lau_of_DKI want to change my vote
17:25rhickeybifurcation: +compatible -no-full-lazy-seqs -two-verions-of-every-fn
17:26rhickeyunified model: -breaking +fully-lazy-seqs +more-elegant-api -no-punning
17:26danlarkintwo versions of every fn should count as two minuses
17:27danlarkinbut so should no punning, gah!
17:27rhickeydanlarkin: there will be (defstream map ...) generating map and map*
17:27Chouserit's more than just compatible, it's also more succinct for any seq users, isn't it?
17:27Chouserthough rather less succinct for stream users.
17:28Chouser"it" being bifurcation in both the above
17:28karmazillacould an ILogical interface make "empty seqs" become logical false, or is that going too far for too little?
17:28Chouserempty streams
17:28rhickeykarmazilla: its not the interface, it's the eagerness of determining emptiness
17:29Chouserhmmm.
17:29rhickeynil punning is fundamentally in conflict with full laziness, and other indirections
17:29karmazillaah, I see now
17:29rhickeyI've come to conclude
17:29rhickeymuch to my chagrin
17:29Chouserwas my post incorrect that dug into exactly how existing seqs are already fully lazy?
17:30rhickeyChouser: which one?
17:31rhickeythe way I've implemented streams, you can chain them and then just seq the end, yielding great perf + easy consumption, caching etc
17:31rhickeythere is a one-time threadsafe transition of a stream into a seq
17:32rhickeynote I like nil punning quite a bit, as I did in CL, why I made it work in Clojure
17:34rhickeyand have pushed back against the even/odd laziness arguments, arguing for lazy-except-for-first being a reasonable compromise
17:34Chouserhttp://groups.google.com/group/clojure/msg/cfa89c8265a33f2c
17:34rhickeybut it is interesting that the same thing is needed for both full laziness and stream/seq transparency
17:37rhickeyChouser: right, so only first and rest can be lazy, but not the work needed to determine if there is a first, which often needs to get the first of some other seq
17:37Chouserbasically, 'first' being lazy allows you to split the determination of "if there's more" from "what the next value"
17:43rhickeybasically rest returning nil means at least some work (that required to determine if there is any more) cannot be lazy
17:44danlarkinthat makes sense, makes me sad though :'(
17:45rhickeyas Chouser's post indicated, it i not really a problem in practice very often. Certainly this change would not be justified by full-laziness only
17:47rhickeyif rest returned something opaque, it could be a Delay
17:47ChouserI'm still not quite following. The only work 'rest' ever has to do is determine if there's more. To find out what that more is, the also-lazy 'first' can then be computed. How much more split up can the work be?
17:49rhickeyChouser: (defn foo [] ... (rest x))
17:49rhickeyif the consumer never uses it, this does too much work
17:50rhickeyit's more where the split lies, but there are three distinct things: the seq itself, the first value, the rest value
17:50rhickeyright now the seq itself is always eager
17:50rhickeyif you could delay the seq, then most likely you would delay seq+first together, and rest
17:50rhickeystill two delays, but at different points
17:52rhickeymost seq fns would look like (defn aseqfn [] (delay #( ... (lazy-rest-only-cons x (cal-rest)))))
17:56rhickeya simple example is drop, must do most of its work in all cases
17:57rhickeyand the work of producing the dropped items of the seq it's manipulating
17:57rhickeynot fully lazy
18:06Chouseryou'd still force the 'first's in order to cache, even when just dropping, as LazyCons does now?
18:07rhickeyChouser: yes, seqs are still persistent
18:10rhickeythe difference is drop would do no work until you called seq/first on what it returned
18:24Chouserok, the drop example helps me, thanks.
18:24ChouserThe cutover pain is going to be real, but I'm in favor of removing the wart that nil punning requires.
18:27rhickeyChouser: thanks for the considered feedback
18:30rhickeyI still haven't made a decision, one thing I'll be doing is an audit of the changes required by Clojure itself - I use a good bit of nil punning
18:30rhickeyalso, there is a secondary issue regarding code that relies on the type of the return values of seq fns, like the compiler!
19:22rhickeyhmm... that conversation seemed to scare everyone off :)
19:22Chousukeheh
19:24Chousukerhickey: while you're still here: http://code.google.com/p/clojure/issues/detail?id=41
19:26rhickeyok
19:56knaprhow can I interact with C++ code from Clojure?
19:57hiredmanjni?
19:57knaprim writing my own Matrix-lib for a huge-ass sparse matrix and I want to write the highlevel code in lisp not C++.
19:57knaprok
19:57Chousukehm
19:57knaprand how is the overhead? is it worth it?
19:58knapror it will then be like i wrote it in Java?
19:58Chousukedo you need to write your own lib?
19:58knaprmaybe I should use python instead?
19:58ChousukeI mean, there are java matrix libraries.
19:58knaprmaybe I cant use the JVM
19:58knapractually
19:58knapri need special-purpose superpacked
19:59Chousukebut no, the overhead of JNI shouldn't be much more than what overhead generally is for such things.
19:59ChousukeI don't know for sure, but I've never heard of anyone complaining about JNI overhead :/
20:04knapr= java native interface?
20:06luxanctusI hear crickets chirping.
20:06luxanctusWas it me?
20:06luxanctusWelcome back.
20:09luxanctusBye.
21:37durkais there any way
21:37durkawhoops
21:37durkais there any way to have clojure attempt to eval some code without actually doing anything
21:38durkain other words, i want the exceptions that would be thrown during load
21:38danlarkin(doc read)
21:38clojurebotReads the next object from stream, which must be an instance of java.io.PushbackReader or some derivee. stream defaults to the current value of *in* .; arglists ([] [stream] [stream eof-error? eof-value] [stream eof-error? eof-value recursive?])
21:41durkabut does that resolve symbols
21:41danlarkinyeah
21:41danlarkinthere's a request for a non resolving reader, I'm pretty sure?
21:42danlarkinnot sure what the priority is
21:43ChouserI don't think 'read' resolves symbols.
21:44Chouser,(namespace (read-string "filter"))
21:44clojurebotnil
21:46durka,(read-string "(WildlyInvalidCode.)")
21:46clojurebot(WildlyInvalidCode.)
21:47durkabut i would want an exception there
21:47Chouser,(read-string "(invalid(syntax")
21:47clojurebotjava.lang.RuntimeException: java.lang.Exception: EOF while reading
21:49durkai'm reading valid syntax but looking for unresolvable symbols
21:51Chouser(clojure.lang.Compiler/analyze clojure.lang.Compiler$C/STATEMENT (read-string "filter"))
21:54Chouser,(clojure.lang.Compiler/analyze clojure.lang.Compiler$C/STATEMENT (read-string "filter"))
21:54clojurebot#<VarExpr clojure.lang.Compiler$VarExpr@510dc2>
21:55Chouser,(clojure.lang.Compiler/analyze clojure.lang.Compiler$C/STATEMENT (read-string "(java.util.Date.)"))
21:55clojurebot#<NewExpr clojure.lang.Compiler$NewExpr@1033450>
21:55Chouser,(clojure.lang.Compiler/analyze clojure.lang.Compiler$C/STATEMENT (read-string "(java.util.Date. 55)"))
21:55clojurebot#<NewExpr clojure.lang.Compiler$NewExpr@5b6d00>
21:56lisppaste8durka pasted "looks like we have a winner" at http://paste.lisp.org/display/73458
21:59ChouserI don't know how stable that API will be, but ClojureScript uses it, so you've got a fighting chance.
22:04durkacool
22:04durkathanks Chouser
22:06Chousernote that #=() expressions are evaluated. I haven't found any way that those are dangerous, but I'm not completely sure.
22:09Chouseroh, scratch that. #=(java.lang.System/exit 0) does what it does.
22:11Chouserclojurebot: feeling lucky?
22:11clojurebotI don't understand.
22:11Chouser,#=(java.lang.System/exit 0)
22:11Chouserclojurebot: still here?
22:11clojurebotIt's greek to me.
22:12Chouserhm!
22:13durkaevaluated but still subject to the JVM security policies, yes?
22:14ChouserI would assume so.
22:14Chouseroh, you mean why clojurebot didn't kick it. yes, I'm sur eyou're right.
22:19arohneris the command line behavior of clojure.lang.Repl / clojure.lang.Main documented anywhere?
22:19arohnerclojure.org is empty on that page
22:20mmcgrana(doc clojure.main/main)
22:20clojurebotPardon?
22:21mmcgranawell yeah chech out the docs for clojure.main/main, either at the repl or in the main.clj source file
22:21arohnermmcgrana: thanks
22:21mmcgrananp
23:34danleihi! i've got a problem running slime, everything is up to date, i haven't changed my configuration (which worked), but i'm getting "java.lang.NoClassDefFoundError: clojure/main" when i try to start slime. my classpath seems to be set correctly in .emacs though ... any ideas?
23:35danlei(if my whole configuration would help, i'll paste it at lisppaste)
23:36durkaare you sure clojure is up to date?
23:36danleiwell, i ran svn up a few minutes ago and mvn installed it
23:36danleiso ... yes
23:37danleir1162
23:38durkaaha
23:38danleirunning via command line works fine
23:38durkaare you using the google code repository
23:38durkacurrent revision is 1207
23:38danleino, sourceforge
23:38danleidid that change?
23:38durkathat is abandoned
23:38durkayes
23:38danleioh
23:38danleithank you!
23:38durkahttp://code.google.com/p/clojure/
23:39danleithanks