#clojure logs

2012-05-11

00:02Null-Agnight
00:03_szis there a way to rename/alias java classes? (for the purpose of accessing static members in a less verbose fashion)
00:03_szthe closest thing i've found is http://stackoverflow.com/questions/2852133/clojure-vars-and-java-static-methods
00:04_szwhich solves everything (fields, methods) but inner classes
00:05_szunfortunately, i'm trying to use this package (javacv) which uses a ton of those...
00:05ivan_sz: (import ... :as x)?
00:06_szdoes that actually work with import?
00:06ivaner, I should shut up :)
00:06gfredericksno it doesn't
00:07_szyou got my hopes up there for a sec :)
00:12_szso i understand it's just not possible at this point?
00:12kennethhey so the repeat function, can i use it to repeat steps of an algorithm
00:13kennethright now it's returning a collection with the same value n times, but i'd like each to execute the function once
00:13brehautrepeatedly
00:14kenneth(doc repeatedly)
00:14brehautbut its still probably not what you want
00:14clojurebot"([f] [n f]); Takes a function of no args, presumably with side effects, and returns an infinite (or length n if supplied) lazy sequence of calls to it"
00:15PeregrinePDX(doc iterate)
00:15clojurebot"([f x]); Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects"
00:15kennethright, i want that, but minus the fact that it's passing the return value to the next step
00:16metellusmaybe dorun
00:16mefestokenneth: isn't repeatedly the function you want?
00:17metellushe wants the seq to be realized
00:17mefesto,(take 5 (repeatedly rand))
00:17clojurebot(0.4176372286247386 0.20749523847155404 0.6640069389829846 0.8634799445247344 0.7359045500862336)
00:17brehautif you want to maintain pure functional logic, you have to pass some value in form theprevious itteation into the current iteration, otherwise there wont be any state maintained
00:17amalloy&(repeatedly 5 rand) ;; mefesto
00:17lazybot⇒ (0.0868441376220952 0.055044885306857694 0.8384131280779435 0.7513873477507058 0.6478443025930312)
00:18kennethi'm using clojurescript, is repeatedly not available in cljs?
00:18dnolen`kenneth: it is
00:18kennethoh nvm
00:18kennethi think i got it
00:21PeregrinePDXkenneth as brehaut constantly repeats to me. If you find a function that almost does what you want. Like repeat try (apropos 'repeat)
00:21brehautit takes regexen too
00:21PeregrinePDXIt'll find all the functions that contain repeat in the name. You often find some variant that does what you want.
00:22kennethooh neat trick
00:23Cr8hmm
00:23Cr8trying to do a getline method over a java.nio.ByteBufer
00:23Cr8it.. works, but advances the position in the source buffer by two lines instead of one somehow
00:24PeregrinePDXYeah, he's told me apropos this or that at least 5 or 6 times over the last few days when I complain to him that something almost works but not quite.
00:24PeregrinePDXEventually I m ight learn.
00:24Cr8https://www.refheap.com/paste/2685
00:24brehautlol
00:25Cr8possibly just advancing twice as much as it should, the lines are the same length
00:29Cr8ah, misread the docs :)
00:33dnolen`http://github.com/swannodette/mori
00:35ivannice name
00:36brehautdnolen`: holy crap
00:37dnolen`brehaut: just getting started, I want to make this super easy for JS devs.
00:37brehautdnolen`: i suspect you might just have changed my life
00:37brehauthaving real collections in JS is something i have wanted for years
00:37brehautreal _and persistent_ collections is even better
00:39dnolen`brehaut: yes! open to any and all suggestions (forEach, each, etc.)
00:42dnolen`awesome
00:43brehautthis might give me a way to work on clj(s) for work stuff
00:43dnolen`brehaut: will be more useful for most JS devs once the reduce frameworks lands in CLJS
00:43brehautah true
00:43dnolen`brehaut: having to interact with lazy seqs for JS devs will probably be an non-starter.
00:44brehautmeh :)
00:44dnolen`brehaut: ha, I certainly have no problem w/ lazy seqs but people will be confused :)
00:44brehautdnolen`: a lot of the work i do, nobody else touches my code
00:45brehautand ive written my own half arsed lazy seqs in the past
00:45dnolen`brehaut: heh, yes it will be useful for folks wanting this kind of thing right away.
00:45dnolen`brehaut: just that for more general usage people will want strict behavior.
00:45brehautdnolen`: does the default build not run through closure?
00:45brehautyeah i agree
00:45dnolen`brehaut: it does
00:46brehautoh, just not a minifier
00:46dnolen`brehaut: it does get minified.
00:46brehauthmm. maybe something is funny with my env, as it certainly isnt here
00:47dnolen`brehaut: what do you mean? like you doesn't see an obfuscated file?
00:47spjtclojurescript will give you job security, because nobody else will ever be able to figure out your code
00:47dnolen`brehaut: obfuscated but pretty-printed
00:47brehautdnolen`: yeah, nicely laid out
00:47dnolen`brehaut: yes, I need to bug emezeske about that.
00:47dnolen`brehaut: that's the correct output.
00:48brehauti certainly couldnt make head or tail of the code, but its got a lot of whitespace :)
00:48dnolen`brehaut: haha no need to make heads or tails of the code :)
00:48brehautno :)
00:48brehautim just wondering how small it can get
00:48dnolen`brehaut: 21k gzipped right now :)
00:49brehautcheers :)
00:51dnolen`emezeske: ping
00:53emezeskednolen`: hey!
00:53dnolen`emezeske: I noticed that compiled files always pretty print
00:53dnolen`emezeske: which is a code size hit
00:54emezeskednolen`: oh? that's weird.
00:54emezeskednolen`: did anything about the :whitespace option handling change?
00:54dnolen`emezeske: not that I'm aware of.
00:54dnolen`emezeske: cljs test output is not pretty printed.
00:55dnolen`emezeske: seems like this might be getting set accidentally in lein-cljsbuild?
00:55emezeskednolen`: cljsbuild sets some default values for the :compiler map
00:55emezeskednolen`: including :pretty-print true
00:55emezeskednolen`: I wonder if it should do that; probably not
00:56dnolen`emezeske: yeah I see that it's set to true
00:57emezeskednolen`: I opened an issue: https://github.com/emezeske/lein-cljsbuild/issues/89
00:57emezeskednolen`: I gotta run for now
00:57dnolen`emezeske: np, thx
00:58brehautdnolen`: seems like persistent data structures would be ideal for farming off work to web workers
00:58dnolen`brehaut: sadly copying overhead destroys any benefits there I think.
00:58brehautthey still copy? i thought newer imps just froze?
00:58brehautapparently i need to go do some reading
00:59dnolen`brehaut: would be awesome if that were true.
00:59brehautif im just fabricating things in my head, it would be less awesome
00:59dnolen`brehaut: once problem is that engines like V8 convert to maps on freeze
00:59dnolen`one problem
00:59dnolen`which sucks
00:59brehautyeah greatly
01:00brehautJS is still the land of one hand giving, and the other taking away
01:00dnolen`brehaut: but yes, if there's ever a sensible fork/join like abstraction for JS, massive win.
01:03dnolen`brehaut: k, even from playing around just a tiny bit - being able to use CLJS api from JS just rules.
01:03dnolen`mori.into_array(mori.interpose("foo", mori.vector(1, 2, 3, 4)))
01:03brehautthats awesome
01:04dnolen`brehaut: another JS plan I have in the works - Datalog for JS via core.logic
01:04dnolen`if the datomic team doesn't beat me to it of course.
01:04brehauthaha
01:04brehautthat'd be mind boggling
01:04dnolen`brehaut: I've been thinking about the new reduce framework and storing tuples as JS arrays
01:05dnolen`would be very efficient I think.
01:05brehauti imagine so
01:05brehautthey are pretty well optimized if they arent growing
01:16dnolen`mori.first(mori.nth(mori.take(2, (mori.interpose("foo", mori.vector(1, 2, 3, 4)))), 1)) // => "f"
01:16dnolen`gotta love the fact that the API handles JS natives.
01:20brehautdnolen`: is map missing?
01:21dnolen`brehaut: should be there.
01:22dnolen`brehaut: oops no
01:22brehautmori.into_array(mori.filter(function (x) { return x % 2 == 0;}, mori.vector(1,2,3,4)))
01:22brehautfantastic
01:24dnolen`brehaut: added map to master
01:24brehautfunction fac (n) { return mori.reduce(star, mori.range(1, 5)); }
01:24brehautalso awesome
01:27dnolen`brehaut: http://github.com/swannodette/mori, added coffee example
01:27brehauthaha nice use of underscore :)
01:32PeregrinePDXMust not look at number 43
01:34brehaut_.get(_.hash_map(_.set([1,2,3]), "a"), _.set([1,2,3]))
01:34brehautthat has totally made my day
01:36dnolen`brehaut: pull request welcome :)
01:36clojurebotAnyone can hack! http://images.wikia.com/pixar/images/0/0d/Http_alliedow-files-wordpress-com_2011-01_anyone-can-cook-445x355.png
01:36dnolen`brehaut: if you have improvements changes in mind.
01:36brehautdnolen`: if i have anything to add i shall :)
01:36dnolen`brehaut: excellent.
02:47ambrosebsis (set? nil) => false, (coll? nil) => false, (seq? nil) => false in CLJS to keep compatibility with CLJ?
02:48ambrosebsthey have weird method bodies (defn set? [a] (when-not (nil? a) (satisfies? IPersistentSet a)))
02:48ambrosebseven tho nil satisfies ISet
02:48robertstuttafordmy function is returning a clojure.lang.Delay instead of the map i'm expecting. how do i get the function that calls this function to block until it gets the map instead of getting the Delay immediately?
02:50amalloy&(doc force)
02:50lazybot⇒ "([x]); If x is a Delay, returns the (possibly cached) value of its expression, else returns x"
02:50robertstuttaforduse the force!
02:50robertstuttafordthank you amalloy
02:50amalloy$findfn (delay 10) 10
02:50lazybot[clojure.core/deref clojure.core/force]
02:52flijtenHmm< I use a group by on a list, but a group by seems to return a map of vectors by default. Now my pop does exactly the opposite of what expected (return a collection without the last instead of without the first)
02:52flijtenIs there anyway around that
02:53robertstuttafordhmm. even though i'm (force data) it's still getting a delay
02:54robertstuttafordthe functions in question are doing IO - mysql and files-on-disk access
02:55robertstuttafordwhen i call them in repl they return the map. when i trigger the compojure routes in repl i get the Delay
03:08johnfnin clojure, is there a reason why mapping over a set or a vector gives a list back?
03:08amalloyit gives back a lazy sequence, which prints the same as a list in the repl
03:09johnfnright
03:09johnfnso is the reason just laziness?
03:09amalloywellllll
03:09johnfnand is there a better way to transform a set than (set (map […]
03:09amalloyif it weren't for laziness, it could give back a set or a vector or whatever
03:10johnfnyea
03:10amalloybut the fact that it gives back just "something seqable" is a nice design choice - you just have one interface for generally dealing with collections of things
03:11amalloyso i can't say it's "just" because of laziness
03:11johnfnbut aren't vectors and sets also seqable?
03:14amalloyyes. but because there's one interface for seqable-ness, map just takes in seqs, it doesn't know anything about vectors or sets or whatever
03:14amalloyso all it can give out is a seq
03:15johnfnhmm. that makes sense.
03:15amalloyif you like, you can write map-preserving-type
03:15johnfnyea
03:15amalloynever mind, my suggested implementation sucks
03:17robertstuttaforda question about delays… https://gist.github.com/2658093
03:23dmi3yHi. While playing with example-projects in lein-cljsbuild I failed to start the ring server with 'lein ring server-headless'. Lein says 'ring is not a task'. How do I start the ring server with lein?
03:23robertstuttafordgot lein-ring in your project?
03:23robertstuttaford*shoots from the hip*
03:24dmi3yyep, there's a dev-dependency on ring 0.7.0
03:31kralmorning
03:32mmarczykreducers in ClojureScript: http://dev.clojure.org/jira/browse/CLJS-250
03:32johnfnalright; why does #{(gensym) (gensym)} give me a duplicate key error?
03:34hiredmanjohnfn: because when the reader constructs the set #{(gensym) (gensym)} (gensym) is the same as (gensym)
03:34echo-areaTimMc: I seem to find another bug of Clojure... This time about at least `keep'. I'm trying to make a simplest case to reproduce it
03:35johnfnhiredman: huh. yeah, that makes sense.
03:36echo-areaTimMc: I'm encountering StackOverflowException; but by accessing the second item of the collection passed to `keep', it won't be thrown
03:38echo-area(inside the body of `keep')
03:39hiredmanecho-area: it's not a bug, you've built up too many layers of lazy sequences, and realizing them all at once causes lots of method calls which blows the stack
03:40echo-areahiredman: How do you define "too many"?
03:42echo-areaThe program in which I'm having this issue tries to open a list of HDFS files. If I replace these HDFS files with local files, the issue goes away
03:43echo-areaNothing but the files, and the way to open the files, changes during that attempt to reduce program size but still keeping the issue.
03:44echo-areaAnd hence the layer of lazy sequence is not changed in this course
03:50fliebelRaynes: How far by train from NYC?
03:52amalloyfliebel: a thousand miles by car, about the same by train probably
03:52robertstuttafordwhat's the idiomatic way to provide configuration data to a ring-based .war app?
03:53robertstuttafordstuff like database creds and filesystem paths
03:55fliebelamalloy: crap, america is big...
03:55amalloyfliebel: for me, NYC is 2800 miles
03:56fliebeleuropeans think 100km if far, americans think 100 years is long ago.
03:56amalloy*chuckle*
04:07robertstuttafordanyone using cemerick's friend?
04:24bobryis there a format function for clojurescript?
04:30bobry(format "%s" "foo") works fine in clojure, but raises an undefined error in clojurescript
05:34robertstuttafordjavascript online/offline detection is a bag of pain :-(
05:58ambrosebsis there a type for protocols?
05:58ambrosebsjust seems like a normal map to me
06:04Madsyexit
06:38Borkdudeseems like light table is going to make it :) http://www.kickstarter.com/projects/306316578/light-table
06:54robertstuttafordthat's awesome. chris writes great stuff, it'll be interesting to see what he comes up with
07:54bobryIs it possible to use enlive's 'deftemplate' with clojurescript?
08:01solussd_is it possible to pass a symbol into a macro to be used as the symbol to be bound in a let? i.e. so an anaphoric macro can have the user name the anaphor?
08:04jwr7How can I check if (seq s) will succee?
08:04jwr7s/succee/succeed/
08:05jwr7Or, more precisely — how can I check if something is a nonempty string?
08:07kmicujwr7: http://clojuredocs.org/clojure_core/clojure.string/blank_q
08:08jwr7kmicu: that fails when passed a number. I'll stick with (and (string? s) (seq s)) for now, I think...
08:09vijaykiran, (> (.length (str 9)) 0)
08:09clojurebottrue
08:09stuartsierrasolussd: yes
08:10stuartsierrawhen-let, if-let work that way
08:21solussd_stuartsierra: I meant to say, "the symbol to be bound to", e.g., a macro with args of, say, [a b] and call it like this: (mymacro (+ 1 2) x), and have my macro expand to (let x (+ 1 2)) …. etc
08:22solussd_stuartsierra: right now I just do a postwalk and replace the anaphor in the passed in expression
08:22stuartsierrasolussd: sure
08:22solussd_can't seem to get the quoting right..
08:23stuartsierra(defmacro mylet [sym expr & body] `(let [~sym ~expr] ~@body))
08:24solussd_erm.. ok. i feel dumb.
08:24solussd_thanks
08:24stuartsierrano problem
08:25solussd_I was mentally starting from the '~captureme form. :)
08:27stuartsierrasolussd_: Right, you're not doing symbol capture in this case.
08:28solussd_yup. no amount of elaborating on '~ would have saved me. missed the simple case.
08:30robertstuttafordwhy does CCW sometimes use clojure 1.2.1 for the repl instead of 1.3.0? bloody annoying
08:37mmarczykletfn support for ClojureScript -- http://dev.clojure.org/jira/browse/CLJS-251
08:38mmarczykbug reports etc. would be much appreciated
08:43dnolenmmarczyk: ping
08:43mmarczykdnolen: pong
08:43mmarczykdnolen: have you seen CLJS-251?
08:44mmarczykoh, you have :-D
08:45pandeiroanyone know how to include the clojure.tools.macro ns as a project dependency with lein
08:45mmarczykdnolen: mori looks very cool :-)
08:45dnolenmmarczyk: yes :) will be cooler with the reducer framework.
08:46mmarczykdnolen: oh yeah :-)
08:46mmarczykdnolen: I was going to send you a pull req for list* but decided I'm not sure what to do with * :-P
08:46stuartsierrapandeiro: http://search.maven.org/#search%7Cga%7C1%7Cclojure%20tools%20macro
08:46bobryhow can i apply a function to each key of the map and build a new map out of that? it looks like 'core/map' only returns lists :(
08:47dnolenmmarczyk: yeah, when exporting I change the name.
08:47stuartsierrabobry: reduce over the map or use (into {} ..>)
08:48dnolenmmarczyk: so the reducer stuff is working with the core data structures?
08:48mmarczykdnolen: it should
08:49bobrystuartsierra: thanks! i thought there's a generic function for that, something like Haskell's 'fmap'
08:49mmarczykdnolen: as in Clojure
08:49mmarczykdnolen: I'll put together a test suite this weekend -- with the stuff in the (comment ...) in reduce.clj as the starting point
08:50mmarczykdnolen: no better way to find bugs than trying to use it, of course
08:50dnolenmmarczyk: did the comment stuff work?
08:50mmarczykdnolen: yes
08:50dnolenmmarczyk: cool
08:51flijtenAnyone willing to comment on my quicksort implementation in clojure? Specifically since it seems written with a non-functional programming mindset still. It's my first attempt at clojure: http://pastebin.com/jbGFCDAa
08:51mmarczykdnolen: the part that's meant to work, that is -- there is one expression which fails in Clojure, IIRC
08:51stuartsierraHey ClojureScript dudes!
08:51stuartsierraTry out this G.Closure third-party JAR:
08:51stuartsierrahttps://oss.sonatype.org/content/repositories/orgclojure-308/org/clojure/google-closure-library-third-party/0.0-790/
08:52stuartsierraLet me know if it works, and I'll release it to Maven Central Repos.
08:53TimMcbobry: (zipmap (map f (keys m)) (vals m)) perhaps
08:54TimMckeys and vals are guaranteed to provide the same ordering given an identical? object.
08:56bobryTimMc: looks good, thanks!
08:56pandeirostuartsierra: thanks
09:05mmarczykstuartsierra: that jar appears to be empty except for some metadata?
09:05mmarczykhm, wait, let me double check
09:06mmarczykoh no it isn't, sorry
09:06mmarczykstuartsierra: ^
09:06mmarczykno idea what happened to my download then... anyway, checking now
09:08timvisherhey all
09:08mdeboardhi
09:08stuartsierrammarczyk: ok, let me know
09:09timvisheram i wrong in thinking that `into` is lazy?
09:09timvisheri want to have an infinite sequence with the first element being ungenerated
09:10mmarczykstuartsierra: the test suite passes
09:10timvisherso i was mapping over an infinite generator and i tried throwing an into in front of it and i got an OOM error
09:10mmarczyktimvisher: it's not lazy
09:10mmarczyktimvisher: actually uses reduce -- and transients if possible
09:10timvishermmarczyk: sweet
09:10timvisherso how would i put something fixed in front an infinite sequence?
09:11mmarczyktimvisher: cons ?
09:11mmarczyktimvisher: concat, lazy-cat
09:12timvisherah yes
09:12timvisheri suppose i should remember those from my own post
09:12stuartsierrammarczyk: thanks
09:12timvisherit's been so long since i had to care :)
09:12mmarczykstuartsierra: np; some other code also works fine; haven't checked browser-repl though
09:13timvisherby the by, something changed about my emacs set up recently and i no longer get the helpful little hints in the mini-buffer about the function i'm typing out
09:13timvisherwhat mode is that?
09:13robertstuttafordstuartsierra: for a newbie, what does that jar do?
09:13dnolenmmarczyk: reducers stuff in and works http://github.com/swannodette/mori
09:13stuartsierrarobertstuttaford: It's a package of the third-party extensions to the Google Closure Library. It includes stuff like goog.dom.query, a CSS selector ported from Dojo.
09:14mmarczykdnolen: :-D
09:14dnolenstuartsierra: I'm assuming you all want to stick with the older GClosure for your projects?
09:14robertstuttafordah ok. i noticed the gclosure included in cljs was smaller than the gclosure i'm using from svn
09:14robertstuttafordso this brings the thirdparty stuff back to the party
09:14stuartsierradnolen: I was actually looking for reports on whether the latest GClosure (compiler and/or library) works with ClojureScript.
09:15stuartsierrarobertstuttaford: Yes, we want to keep them separate because the licenses differ.
09:15robertstuttafordmakes sense
09:15duck1123I've been using a more recent release, but I haven't tried the new patch yet
09:15dnolenstuartsierra: does as far as I know. bootstrap script has been updated.
09:15robertstuttafordis the library in cljs a direct export of google's? or is it a curated subset?
09:15dnolenstuartsierra: I noticed that HEAD does not work.
09:15stuartsierrarobertstuttaford: direct export
09:15dnolenstuartsierra: I mean GClosure HEAD.
09:15duck1123I needed websocket support
09:16robertstuttafordok cool
09:16robertstuttafordstuartsierra: i ask this of everyone who talks about cljs. have you had to generate externs for exported symbols in any of your cljs projects?
09:17stuartsierradnolen: OK. Does the G.Closure library r1376 work?
09:17robertstuttafordi want to do the base-app + modules thing with cljs for both
09:17dnolenstuartsierra: is that the latest relese?
09:17stuartsierrayes
09:18dnolenstuartsierra: yes that works and is a part of CLJS 1211 release
09:18robertstuttafordmy closure library is at rev 1843
09:18dnolenstuartsierra: meaning if you bootstrap that's what you get and what the tests run against.
09:19stuartsierradnolen: OK, but the releases have a POM file that declares the dependency on G.Closure Lib r790.
09:19stuartsierraWe need to keep these things in sync.
09:19dnolenstuartsierra: oh gotcha, I'm still a total Maven noob.
09:20stuartsierradnolen: Are we still dependent on G.Closure compiler r1592?
09:20dpritchettwould it be preferable to use "(partial = x)" or "#(= x %)" ?
09:21dpritchettthey appear to work about the same
09:21mmarczykstuartsierra: for some reason the browser-repl seems not to work with gclosure lib from that jar
09:21dnolenmmarczyk: you can no longer use file:// protocol
09:21mmarczykdnolen: ohhhh of course
09:21mmarczykdnolen: forgot about that
09:22mmarczykdnolen: thanks
09:22dnolenstuartsierra: I always tests via bootstrapping. so I've run the test & browser REPL with GClosure lib r1376 and compiler-latest
09:22dnolenthose work
09:22stuartsierraOK. Any idea what revision compiler-latest corresponds to?
09:24stuartsierrar1918 it looks like
09:24dnolenstuartsierra: yep
09:24mmarczykstuartsierra: dnolen: still doesn't work for me -- "goog is not defined"
09:24dnolenmmarczyk: it's been confirmed to work for a lot of people.
09:25mmarczykdnolen: I mean with stuartsierra's jar
09:25stuartsierrammarczyk: Just checking - you know that JAR does not REPLACE the g.closure library JAR. It adds to it.
09:26mmarczykstuartsierra: hm, I think that's what I did, but -- who knows -- let me start over
09:26mmarczykstuartsierra: probably did sth stupid along the way.
09:34timvisheris there any way to get `lein ring server` to honor the checkouts directory?
09:34timvisheri'm still on lein 1
09:38dpritchettdnolen is there anything in the standard lib that I could use to do simple branching logic? I don't really like nested ifs
09:39dpritchettI am playing with 4clojure and I assume core.match isn't an option
09:39dnolendpritchett: cond, case, condp
09:39dnolendpritchett: do you need something more than that?
09:39dpritchettnah
09:39dpritchetti found case but it didn't seem right
09:39dpritchetti'll look up the others
09:40dnolendpritchett: you probably want cond
09:40rhcspeaking of those, i was looking for a simple way to say something like:
09:40dpritchettyes, cond is exactly what i wanted
09:40rhcgive me the first item of this list that (f item) returns logical true for, or, give me elseitem if none return true
09:41dpritchettalthough even my cond solution will likely be wordier than necessary
09:41rhcbest i could do is something like: (if-let [a (first (drop-while f items))] a elseitem)
09:41dpritchetttrying to figure out how to deal with the fact that the last element of my accumulator could be either a single value or a collection itself http://www.4clojure.com/problem/31
09:41dpritchettso i'll just branch that out into conds as part of a reduction
09:43ambrosebsrhc: i'd use filter
09:44rhcambrosebs: (first (filter f items)) ?
09:44dnolenrhc: (or (some pred coll) elseitem)
09:44rhcahh dnolen, really nice
09:44rhcdidn't even think of using 'or' in that way
09:44ambrosebsas long as no elements of ur collection are falsy that will work
09:45rhc'some' returns falsey on no match i guess?
09:45rhcambrosebs: thats correct
09:46dnolenrhc: some returns the matching thing.
09:46dnolenrhc: if the matching thing is falsey, that snippet won't work.
09:46dnolen(or (some nil? coll) :wat), for example
09:47fliebeldnolen: core.logic does not use seqs much, but rather something more like Scheme cons cells, right?
09:47rhcerr wait, some returns the result of pred for the first non-falsey value of pred
09:47dnolenfliebel: internally yes.
09:48dnolenrhc: except it will return the first nil, nil is falsey, so you'll get :wat.
09:48dnolenwhich is not what you want.
09:49fliebeldnolen: I was thinking about your tweet about speedups by using reducers.
09:49dnolenfliebel: unification
09:49ambrosebsrhc: (if-let [rs (seq (filter pred coll))] (first rs) :default)
09:50ambrosebsrhc: I think that's more correct that ur drop-while version
09:50rhcyeah i guess it doesn't get much better than that :)
09:50fliebeldnolen: I wonder if VisualVM gives you any insight about the seq overhead.
09:50rhcyeah not sure why i was using drop-while over filter
09:51dnolenfliebel: probably
09:51ambrosebsrhc: the problem with your example was you were testing on (first ...) instead of (seq ...)
09:51fliebelHm, I might try that...
09:51dnolenfliebel: in core.logic if I recall the most costly thing now is unification.
09:52dnolenfliebel: switching to PersistentHashMap maps eliminated the cost of walk.
09:52rhcambrosebs: why would that be a problem? wouldn't (first '()) be falsey?
09:52ambrosebs(first '(nil))
09:53dnolenfliebel: join the club :)
09:53rhcdrop-while creates a '(nil) collection when it drops the whole collection?
09:53ambrosebsfliebel: :)
09:53rhcfliebel: which 300? (curious)
09:54dnolenfliebel: the implementation of miniKanren in Scheme.
09:54dnolener, I mean rhc: ^
09:54fliebelrhc: MiniKanren, see the conj unconference for quote.
09:54rhcdnolen: ahh
09:54ambrosebsrhc: hmm I'm probably wrong, bit distracted atm :)
09:54rhcstill need to watch that minikanren pres
09:55ambrosebsrhc: my point is test for emptyness with seq, not first
09:56rhcambrosebs: hmm, ok, i need to read more about sequences i think
10:00fliebel*watching again* http://blip.tv/clojure/dan-friedman-and-william-byrd-minikanren-5936333
10:01fliebel(quote around 4:50)
10:06stuartsierraOK, updated G.Closure Library JAR for revision 1376 at https://oss.sonatype.org/content/repositories/orgclojure-314/org/clojure/google-closure-library/0.0-1376/
10:24dnolen`fogus: heya, can't merge your pull request, I changed the readme :P
10:25`fogusOh! I can submit another PR
10:25dnolenusing ClojureScript from JavaScript rocks! :)
10:25dnolen`fogus: thx
10:25`fogusnp
10:30dpritchettso apparently my 250 char submission is equivalent to "partition-by identity"
10:31`fogusdnolen: I get a provide error on the latest "required "clojure.core.reducers" namespace never provided"
10:31dnolen`fogus: are you using checkouts?
10:32dnolen`fogus: Mori has to be built with CLJS HEAD
10:33`foguswhoops lein deps fail
10:33`fogusGot it now
10:36dnolengonna need a tutorial on all the goodies tailored for JS devs
10:39`fogusAgreed
10:39jasonjcknrhickey: wrt to interactive development for reducers, it'd be nice if evaling (r/map …) in the repl actually executed the collection recipe, i can file a jira issue for that (?)
10:39pandeirodnolen: look forward to that for sure
10:41@rhickeyjasonjckn: no, not looking for more magic
10:41pandeirothe way that maven works, if i want to update the versions of certain deps in a jar, i must update the version of the jar in order to avoid overriding the original, correct?
10:41jasonjckn2disconnected
10:43dnolencould use some upvotes http://news.ycombinator.com/item?id=3959409
10:43jasonjckndone
10:44dnolenjasonjckn: thx
10:45@rhickeydnolen: got the reducers in there fast!
10:45@rhickeynothing like portable Clojure code
10:46`fogusdnolen: Fresh PR headed your way
10:46brainproxydnolen: I've figure out a way to have node-clojurescript to transparently use a "detached JVM", so you'll be able to do `ncljsc -S <port>`
10:47stuartsierraSummary of new G.Closure Library JARs:
10:47stuartsierrahttps://groups.google.com/d/topic/clojure-dev/TiJGSmM1gTo/discussion
10:47dnolenrhickey: haha, yes - thanks to mmarczyk :)
10:47brainproxyand then when using ncljsc to run/compile scripts, or when using node require to load .cljs, you'll be able to spec a port number
10:47dnolen`fogus: merged
10:48brainproxyshould dramaticaly improve the experience, i.e. compile times will feel pretty snappy so long as you've got the `ncljsc -S` process running in the background
10:48`fogusdnolen: Thanks!
10:53jasonjcknDoes CollFold need to be moved into core.protocols namespace?
10:56brainproxydnolen: mori looks cool, would you be interested in a pull request that would make the thing nodejs and ender friendly, or do you think that would best be served by a derivate project?
10:56bartjhello, anyone from a computer vision background here ?
10:56mmarczykrhickey: dnolen: just attached a patch to CLJS-250 w/ latest flatten and mapcat; or should I make a new ticket?
10:57fliebelbartj: Not me, but I'm already curious to your question.
10:57bartjfliebel, pvt?
10:57fliebelbartj: pvt?
10:57bartjfliebel, er, private chat ?
10:58fliebelbartj: Well, if you want to, sure. But the chance that anyone has anything usefull to say is larger in channel, I'd say.
10:58RickInGAbartj: fliebel: I would like to eeavesdrop
11:00bartjfliebel, RickInGA channel is called bartj
11:14cmcbridednolen: I get this error when I try to compile mori
11:14cmcbridehttps://www.refheap.com/paste/2688
11:15dnolencmcbride: you need to compile with CLJS HEAD
11:15cmcbrideI cloned the cljs repo in to the checkout folder
11:16cmcbrideis there something more I have to do?
11:20dnolenwow reducers work is impressive
11:20dnolenhttps://github.com/swannodette/mori
11:20dnolenlook at the reducer numbers
11:22RickInGAdnolen: reducer numbers?
11:22RickInGAthe times?
11:26askerOfDumbQuestGuess I am not the only dumb one.. did they really schedule the atlanta code camp for the same weekend as georgia high school graduations?
11:33fliebelbartj: https://github.com/quil/quil
11:34bartjfliebel, thanks again!
11:35gtrakcurious, what's with all the magic numbers in generated clojurescript? looking at mori.js specifically
11:37TimMcHmm, this might be a viable approach for Java programmers needing to catch checked exceptions thrown by Clojure (if RTE-wrapping were removed): http://james-iry.blogspot.com/2010/08/on-removing-java-checked-exceptions-by.html
11:38TimMc(The first part shows how to throw "surprise" checked exceptions in Java; the second part shows how to catch them.)
11:41TimMcI mean, it *is* perverse -- but it works.
11:41devnlol, reducers in cljs already?
11:42gtrakTimMc: that's pretty awesome, the chucks thing
11:43jasonjcknamalloy_: currying iterate seems useless, albeit not harmless. However currying repeat would be harmful, because the core implementation has [n x] and [x] as oppose to [n x] and [n].
11:43jasonjcknamalloy_: a consistently design would be to only allow currying for stuff that has coll as last param
11:44jasonjcknnot harmful*
11:53halgarigtrak: if you mean things like fn1254 = function()...then that's just auto generated ids. The compiler has a auto-incrementing counter so that when you need a temp variable you just call gensym and it creates a unique symbol for you.
11:56gtrakfor an example, in function qb(a,b){ this.I = a; this.A = b; this.o = 0; this.g=15990906}
11:56cmcbrideI just did some underscore vs mori benchmark
11:57halgarigtrak: in that case.... Idk
11:57cmcbrideunderscore is still much faster
11:57cmcbrideis this because it is using native reduce?
11:59cmcbridetime(function(){mori.reduce(sum, mori.filter(mori.is_even,(mori.range(100000))))})
11:59cmcbride264ms
12:00cmcbridetime(function(){_.reduce(_.filter(_.range(100000),function(num){ return num % 2 == 0; }), sum, 0)})
12:00cmcbride12ms
12:00_KY_Enclojure project run error: "no main class found" -- what should I do?
12:00jasonjcknamalloy_: you there?
12:05jsabeaudryWhat is the proper way of supporting positioned head requests on files using noir?
12:07technomancyamalloy_: someone pointed me to a problem with ordered on openjdk 8 if you are interested
12:08jsabeaudryaka the "range" header?
12:09_KY_Enclojure project run error: "<no main class found>" -- what should I do?
12:11cmcbrideI got mori down to 95ms by using reducers and using my own is_even function, not bad
12:12technomancyamalloy_: specifically on the lambda branch
12:14mmarczykdevn: reducers in CLJS = copy, paste, adjust protocol & protocol method names, comment out fork/join stuff :-)
12:20jonaskoelker^^ TimMc: surprise checked exceptions---do the pop up from behind the couch when you turn on the light and go "surprise! Con-crash-tulations!"
12:30mmarczykdnolen: ping
12:30dnolenmmarczyk: ping
12:30dnolenoops pong
12:31mmarczyk:-)
12:31dnolenmmarczyk: what's up?
12:32mmarczykdnolen: new reducers stuff @ cljs-250 -- sort of wondering about the process, i.e. reopen / new ticket for updates like this?
12:32mmarczykdnolen: more interestingly
12:33mmarczykdnolen: CLJS-247 -- protocol method test inlining
12:33TimMcjonaskoelker: I hope so!
12:33dnolenmmarczyk: at this point we should see if we can't just get you commit rights to the CLJS repo :D
12:33mmarczykbut, um, I need to find a lost window... just a sec
12:34mmarczyk:-)
12:35mengunah
12:35menguuhm sorry
12:36gfredericksdnolen: I just cloned mori and ran the build command and it gives an error about not finding the reducers ns
12:36mmarczykdnolen: well, that would be marvellous :-)
12:36gfredericksdnolen: nm
12:36dnolengfredericks: everyone keeps saying that even tho the build instructions are quite specific :)
12:36mmarczykdnolen: though with you being super-responsive as you are, not necessarily much of a speedup :-)
12:36gfredericksfirst tell dnolen something is wrong, then read the README
12:36dnolenmmarczyk: I'll ask around.
12:37dnolenmmarczyk: so about CLJS-247?
12:37mmarczykok, found my lost window now
12:37mmarczykdnolen: a sanity check, sort of
12:38uvtcI just noticed a change from Clojure 1.3 to 1.4 that I don't see mentioned in <https://github.com/clojure/clojure/blob/master/changes.md&gt;. With 1.4, I can now use standard libs (such as clojure.string) without needing to `require` them (just as long as I fully qualify func names).
12:38mmarczykdnolen: so would you like to just inline the whole -foo ?
12:38dnolenmmarczyk: no
12:38dnolen(null test && bit-mask && call direct) || protocol-fn
12:39mmarczykdnolen: ok, makes sense
12:39hiredmanuvtc: seems unlikely, most likely some tool you are using is loading them
12:39uvtchiredman: I just tried it via `java -cp path/to/clojure.jar` ...
12:40mmarczykdnolen: I think I might actually put the finishing touches on the benchmark runner first, if only to see some foolproof data on the result
12:40dnolenmmarczyk: k
12:40uvtcI've got 1.3 and 1.4 here, and clojure.string/split works with 1.4 without requiring it.
12:40mmarczykdnolen: I love the reader branch, btw
12:41dnolenmmarczyk: the optimize-reader one?
12:41mmarczykdnolen: yup
12:41uvtchiredman:
12:41uvtcjohn@foil:~/opt$ java -cp clojure-1.4.0/clojure-1.4.0.jar clojure.main
12:41uvtcClojure 1.4.0
12:41uvtcuser=> (clojure.string/split "hello" #"l+")
12:41uvtc["he" "o"]
12:41uvtcuser=>
12:41dnolenmmarczyk: yeah, even with all the perf enhancements still seems strangely slow.
12:41dnolenmmarczyk: but perhaps we should merge in what we have and continue to improve -since the gains are quite large.
12:41mmarczykdnolen: I was actually going to suggest that :-)
12:42hiredmanuvtc: the repl loads it, but if you launch your code outside of the repl it won't be there
12:43hiredmanthe repl loads clojure.java.javadoc for some reason, and that loads a few other things, which load other thrings, one of which is clojure.string
12:45uvtchiredman: Weird. If I create a standalone script with a call to clojure.string/split in in --- and no require --- and then run it via `java -cp path/to/clojure-1.4.0.jar clojure.main foo.clj`, it works too.
12:45dnolenmmarczyk: merged optimize-reader into master.
12:45mmarczykdnolen: great!
12:45hiredmanuvtc: I would not recommend depending on it
12:46uvtchiredman: Ok, thanks.
13:05uvtcIs there any convention regarding what you alias standard libs to when you `require` them? For example, maybe something like `:require [clojure.string :as c.s`?
13:06uvtc(oops, forgot closing `]` there)
13:07uvtcI've seen [clojure.string :as str], but that seems odd, given that there's already a core `str` function.
13:09technomancyyeah, but putting a slash after the str function is meaningless, so there's no chance of collision
13:09uvtctechnomancy: Oh, right. Thanks. :)
13:42mmarczykdnolen: http://dev.clojure.org/jira/browse/CLJS-252 -- first cut at a benchmark suite
13:42dnolenmmarczyk: excellent
13:48mmarczykdnolen: ah, wait, I think I'll have a minor improvement
13:51mmarczykdnolen: new patch attached
13:52mmarczykhm, V8 runs circles around SpiderMonkey
13:53dnolenmmarczyk: you have to use the flags -m -n -a
13:53mmarczykdnolen: you mean pass them to the js runtime in script/benchmark? what do they do?
13:54dnolenmmarczyk: turns on JIT, skips interpretation
13:54dnolenmmarczyk: only applies to spidermonkey
13:54dnolenmmarczyk: if you're testing spidermonkey you should be using the shell from the nightlies
13:55mmarczykdnolen: I see, thanks
13:55mmarczykdnolen: I'll update the patch to use it in the SM part then
13:55dnolenmmarczyk: oops already applied :)
13:55mmarczykdnolen: :-)
13:57mmarczykdnolen: mind applying the new patch on CLJS-250? mapcat for reducers :-)
13:59mmarczykdnolen: also sent you a pull req w/ mapcat for mori
14:00dnolenmmarczyk: thx, merged
14:00dnolenadded zippers and set ops to Mori
14:00mmarczykzippers :-D
14:01`fogusOh my! I go away for 90 minutes and Mori is already my favorite JS lib
14:01TimMcBetter than jQuery?
14:01TimMcBetter than Cornify?
14:01mmarczykone might not be able to bring the ambrosia of macros to the JSers, but one can at least share the fire of PDSs
14:01TimMchaha
14:03dnolenmmarczyk: gotta do some other things but I'll apply those patches soon.
14:03mmarczykdnolen: cool, thanks
14:07mmarczykdnolen: any chance Wednesday next week might get recorded?
14:07dnolenmmarczyk: thickey is coming so fingers crossed?
14:07mmarczykdnolen: oh good :-)
14:09lynaghk`damns clojure folks are fast at the retweets.
14:09lynaghk`= )
14:11Borkdude,(doc if-let)
14:11clojurebot"([bindings then] [bindings then else & oldform]); bindings => binding-form test If test is true, evaluates then with binding-form bound to the value of test, if not, yields else"
14:11Borkdudewhat is a binding? I assumed a name and a value, right?
14:12Borkdude,(if-let [a true, b false] :then :else)
14:12clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: if-let requires exactly 2 forms in binding vector in sandbox:>
14:12lynaghk`Borkdude: if-let and when-let only take one binding.
14:13Borkdudelynaghk`: then the doc of if-let is wrong, it should say binding
14:13Borkdude,(doc when-let)
14:13clojurebot"([bindings & body]); bindings => binding-form test When test is true, evaluates body with binding-form bound to the value of test"
14:13lynaghk`Borkdude: agreed =(
14:14ibdknoxI wish it took multiple :p
14:23dnolenibdknox: you're like hours away now!
14:23ibdknoxdnolen: yeah :)
14:23ibdknoxthere's lots of craziness that has happened otherwise too :)
14:23dnolenibdknox: can't wait to hear more about that
14:24achewhere can i read about what ibdknox is working on?
14:24ibdknoxhttp://www.chris-granger.com/2012/04/12/light-table---a-new-ide-concept/
14:24achethanks!
14:25ibdknoxdnolen: I'm going to get to chat with Tim O'Reilly at the beginning of June
14:25dnolenibdknox: sweet!
14:25ibdknoxtalked with lots of very interesting people
14:25mfexhi all, a clojure library in a jar does not need to be aot-ed to be used from other jvm languages, right?
14:26fliebeldnolen: I still need to touch maven to run core.logic, right?
14:26dnolenfliebel: ?
14:26ibdknoxmfex: from other languages? Yes it does
14:26TimMcibdknox: Ah, you're at FooCamp or whatchamacallit?
14:26technomancymfex: depends on the interface you want to expose
14:27technomancymfex: if you make users consume it via clojure.lang.RT, then no AOT is needed.
14:27fliebeldnolen: I know I can add it as a dep just fine, but I mean, as a git checkout, I can't just use lein, right?
14:27ibdknoxTimMc: yeah, I will be :) Which is an amazing opportunity. I'm very excited about it
14:27dnolenfliebel: all Clojure contribs are available from Maven central repo
14:27dnolenfliebel: you can just use lein
14:28ibdknoxfliebel: you'd have to make a fake project.clj for it
14:28ibdknoxfliebel: if you want it in your checkouts/ dir
14:28technomancyIIRC hugod has a plugin to make mvn checkouts work with lein
14:28fliebelI just want it as a project to hack on
14:29ibdknoxdnolen: TimMc: I think I might get to talk to one of the main researchers on DARPA projects at SRI too
14:29TimMcHaha, sweet.
14:29dnolenibdknox: haha wowzers
14:29mfextechnomancy, I don't want to aot my library jar. Is supplying a small jar that is aot compiled as only a wrapper with a nicer interface a common solution to this?
14:29amalloyjasonjckn: yes, i wasn't sure whether to curry or what, but as you said it seemed at least harmless
14:30technomancymfex: I've seen that done for distributing uberjars, but not for library consumption. no reason you couldn't make it work though
14:30amalloytechnomancy: i guess i'm interested, but i don't know anything about jdk8
14:31technomancyamalloy: me neither
14:32nDuffmfex: ...heck, if you _really_ didn't want anything to be native AOT-compiled Clojure, you could have a Java wrapper that just does clojure.lang.RT calls
14:32technomancymfex: you could always AOT a single ns and have that ns do a runtime require of the rest of your code
14:32technomancythat way you won't get bitten by the annoying transitive AOT behaviour
14:33amalloyjasonjckn (or anyone else): i'm having trouble testing my foldable Range: everything compiles fine, and mvn dependency:classpath points to an existing jsr166y jar, but when i run mvn test i get a ClassNotFoundException: jsr166y.ForkJoinTask
14:39fliebel> (solve-nqueens)
14:39fliebel()
14:39fliebeldnolen: ^
14:39dnolenfliebel: the one in bench.clj?
14:39fliebelyea
14:41dnolenfliebel: yeah I recall that one being broke
14:41fliebeldnolen: zebrao works, though.
14:42dnolenfliebel: will need to look into it at some point - probably a simple mistake.
14:42jasonjcknamalloy: I haven't had a chance to run mvn test yet, logically I don't know why that's happening
14:43jasonjcknamalloy: i'll get around to testing soon
14:43jasonjcknamalloy: you could always upgrade to java 7, it's possible rhickey never tested with jar
14:46technomancygoing to release lein2 preview4 later today
14:46technomancyany last-minute issues to raise?
14:46stuartsierrajasonjckn: Clojure 1.5.0-SNAPSHOT declares jsr166y as a "scope = provided" dependency, not sure why.
14:47technomancyif you're using Leiningen from a checkout, could you pull and give it a run-through?
14:47stuartsierraBut try removing <scope>provided</scope> from pom.xml to see if that fixes your problem.
14:47jasonjcknah
14:47jasonjcknI wondered what that did
14:50hiredmanstuartsierra: because you don't want to drag jsr166y around if you are running on 7+
14:51stuartsierrahiredman: yes, I know
14:51stuartsierrabut I don't see what good declaring it in the first place dose
14:51jlongstercjfrisz: hey, dnolen pointed me to clojure-tco. I'm working on compiling to CPS-ified javascript. How big is the performance hit in clojure-tco?
14:51stuartsierraoh, I see, it's available at compile time
14:52hiredmanjlongster: the real problem with "cps" clojure is it destroys interop by adding trampolines to every call
14:53jlongsterhiredman: I know, but I'm working in another Lisp. plus, that can be circumvented, since the only problem is callbacks.
14:54acagle¯/flush
15:04amalloyjasonjckn: updated to jdk7, the fj stuff seems to be working and now i can debug my code. thanks
15:05jasonjcknamalloy: great, i'm curious when you say 'debug' do you mean print debugging? or do you use something else?
15:05fliebeldnolen: Maybe I'm inadequate at using VisualVM, but I can't seem to find any trace of seq overhead.
15:06amalloyin this case i mean "inspect the stacktrace"
15:06amalloy"and hope to remove bugs"
15:06fliebelthat is, it crashes most of the time...
15:09Raynesfliebel: Hahaha, man, I love talking to people who don't know USA geography.
15:10amalloyRaynes: you should hang out in america, then
15:10fliebelRaynes: ?
15:10amalloywe've got tons of them
15:10fliebelI know where alabama is, now
15:10RaynesThe depths of hell.
15:11fliebelRaynes: Any luck with the DVD hacking?
15:11RaynesI don't know what you mean by 'hacking'.
15:12amalloy$dict hacking
15:12lazybotamalloy: adjective: Short and interrupted, broken, jerky; hacky.
15:12fliebelRaynes: making your DVD player accept any DVD.
15:13RaynesI haven't really tried. Not sure I care enough.
15:13TimMclazybot: wat
15:13fliebelRaynes: But you do care enough to have me send a DVD player over? :P
15:14RaynesI was asking if anybody had a random spare dvd player/optical drive lying around. My life shall continue without it for the time being. :P
15:14fliebelRaynes: I have. It's just a little tricky to get it to you.
15:15rhcRaynes: what city do you live in? i might be able to ship you one
15:16RaynesEldridge, AL, if you can call that a city.
15:17rhci have this old apex player i never use that's region unlocked (i think)
15:17RaynesIn case anyone is wondering what the context of this discussion is, I have some region two discs and nothing that will read them, hence me asking people for spare drives because I'm cheap.
15:18dnolenfliebel: which fns float to the top in VisualVM?
15:18fliebelRaynes: If you send me a cake for my birthday, I'll send you the player :)
15:18fliebeldnolen: ... the pushbackreaders read method. Something is not right.
15:19RaynesI'd send you a box of hohos.
15:19fliebel$dict hoho
15:19lazybotfliebel: Word not found.
15:19Wild_CatRaynes: depending on how region checking is implemented in your drive, you may be able to read the discs with VLC
15:19RaynesWild_Cat: RPC_2.
15:19RaynesSo nope.
15:19Wild_Cat(otherwise, look for a RPC-1 firmware for your drive on http://forum.rpc1.org/ )
15:20amalloy$google hostess hoho
15:20lazybot[Ho Hos® from Hostess Cakes (Our Products)] http://www.hostesscakes.com/hohos.asp
15:20fliebelRaynes: That'll do.
15:20Wild_CatRaynes: I know, but some drives, despite being region-locked, can still have their protection bypassed depending on the software you use. Others, however, will refuse to even list the contents of the disc.
15:21RaynesThis drive will list the contents of the disc, but wont let anything read those contents.
15:21RaynesI have another drive that does the same thing.
15:22RaynesI could temporarily set the drives region to region two and then rip everything off of all of the region 2 discs I've found myself with and then set it back, since I have 5 switches.
15:22Raynesdrive's*
15:22RaynesThat's probably the easiest option.
15:23RaynesI've only got these few discs and I shouldn't be getting any others.
15:23fliebelRaynes: Oh, so no hohos for me?
15:23Wild_CatRaynes: maybe. (sigh. once again, just pirating the bloody thing would be easier -- thank you, big content >.< )
15:23Raynes:\
15:23Raynesfliebel: Fraid not.
15:24RaynesI think ripping the discs is actually legal as long as I don't distribute the content (which I don't plan to do), so that's something.
15:24Wild_Catregion locking has to be the stupidest thing ever.
15:26RaynesWild_Cat: Agreed.
15:27Wild_Catit is, in fact, the one reason why I keep hating Nintendo, in spite of all the objectively awesome things they've done otherwise.
15:31Raynesgfredericks: There is a wild Raynes.
15:32Raynesgfredericks: One gas station, a few houses, and more churches than blades of grass.
15:35dnolenmmarczyk: reducer improvements applied to master
15:39glitch99_I'm having a hard time understanding this syntax.. I'm using incanter and there is a ($where {:le 3}) example where it chooses data by checking if it's less than 3. How do french braces work in clojure
15:39stuartsierraThat's something specific to Incanter.
15:39stuartsierra{:le 3} is just an ordinary Clojure map.
15:40glitch99_stuartsierra: ahh
15:42jasonjcknis there a lein deps equivilent in maven?
15:42jasonjcknit's not grabbing the jsr166y
15:43stuartsierrajasonjckn: mvn dependency:copy-dependencies
15:43stuartsierraWhat are you trying to do?
15:43jasonjckni'm getting forkjoin classnotfound
15:43jasonjckneven though I changed pom.xml as you said
15:44stuartsierraWhat are you running?
15:44jasonjckntrying again
15:44jasonjcknmvn test
15:44amalloystuartsierra: i had the same issue until i upgraded to jdk 7
15:44amalloymvn dependency:build-classpath returned a classpath that pointed at a locally-fetched version of jsr166y, but mvn test still got ClassNotFound
15:45jasonjcknyah still getting the error
15:45amalloyjasonjckn: check the output of build-classpath just to verify you and i were having the same problem?
15:46stuartsierrajasonjckn: cannot reproduce here, with JDK 1.6
15:46amalloyi'm on ubuntu 11.04, if that turns out to be relevant
15:46Raynesamalloy: Old softwares.
15:47jasonjckn[INFO] Dependencies classpath:
15:47jasonjckn /Users/jason/.m2/repository/org/codehaus/jsr166-mirror/jsr166y/1.7.0/jsr166y-1.7.0.jar
15:47jasonjcknCaused by: java.lang.ClassNotFoundException: jsr166y.ForkJoinTask
15:47stuartsierrajasonjckn: Have you run ./antsetup.sh
15:47stuartsierra?
15:48jasonjcknyes
15:48jasonjcknnot since changing pom.xml
15:48stuartsierraWhat's in the maven-classpath.properties file?
15:49jasonjcknstuartsierra: I just regenerated it before you asked
15:49jasonjcknmaven.compile.classpath=/Users/jason/.m2/repository/org/codehaus/jsr166-mirror/jsr166y/1.7.0/jsr166y-1.7.0.jar
15:49jasonjckni'll try mvn test again
15:49stuartsierraok that looks right
15:51jasonjcknstuartsierra: mvn test still failing
15:51stuartsierraamalloy, jasonjckn: Which specific JDK are you using? And which version of Maven?
15:51jasonjcknstuartsierra: java version "1.6.0_31" Apache Maven 3.0.3
15:51stuartsierrajasonjckn: Which JDK: Sun/Oracle, OpenJDK, ...?
15:52jasonjcknstuartsierra: vendor: Apple Inc
15:52stuartsierraok
15:52stuartsierraTrying myself with an empty ~/.m2
15:52jasonjcknamalloy: i installed sun jdk7 but java -version still remains 1.6, did you do anything else? maybe i'll reboot
15:53stuartsierrajasonjckn: You probably need to configure which JDK to use by default.
15:53duck1123jasonjckn: IIRC, there's a settings pannel where you have to drag 7 up to the top
15:53devnRaynes: Should I be expecting this in noir 1.3.0-beta6 => escape-html already refers to: #'hiccup.core/escape-html in namespace: hiccup.page
15:54jasonjcknduck1123: k thanks
15:54Raynesdevn: Probably not. Open an issue.
15:54devnRaynes: I'm requiring [noir.server :as server]
15:54devnRaynes: will do
15:55stuartsierraOK, even with an empty ~/.m2, cannot reproduce the problem.
15:55duck1123jasonjckn: http://reviews.cnet.com/8301-13727_7-57423014-263/how-to-install-and-uninstall-java-7-for-os-x/
15:55jasonjcknfixed it
15:56jasonjckntrying mvn test gaain
15:56amalloystuartsierra: i was using openjdk, but now i'm on jdk7 and not having problems
15:56stuartsierraok
15:57ibdknoxdevn: that sounds like you're doing a :use on hiccup.something?
15:57amalloyjasonjckn: the stuff i had to do on ubuntu is probably not relevant to what you have to do on macos. i had to move around some symlinks and call update-alternatives a few times
15:57stuartsierraamalloy: Clojure is currently passing on Hudson on OpenJDK 1.6, http://build.clojure.org/job/clojure-test-matrix/77/
15:58jasonjcknamalloy: *nods* i managed to switch it
15:59jasonjcknmy unit tests passed, ship 1.5 quick!!
16:03stuartsierraClojure should still work all the way back to JDK 1.5 (not including ForkJoin stuff) but starting with Clojure 1.5.0 it can only be BUILD on a 1.6 JDK.
16:05amalloystuartsierra: since it's open-source friday, could i trouble someone to look at http://dev.clojure.org/jira/browse/CLJ-993 and http://dev.clojure.org/jira/browse/CLJ-992? rich asked for a range reducer, and i want to make sure these didn't slip under the radar to get implemented by someone else
16:05stuartsierraamalloy: I'll take a look in a few minutes.
16:08stuartsierraamalloy: Are the patches on 993 replacements or accumulations?
16:08amalloyaccumulations
16:08stuartsierraok
16:09jasonjcknstuartsierra: amalloy: I just put my patch up at http://dev.clojure.org/jira/browse/CLJ-994
16:09jasonjckni've never contributed to clojure, so not sure if i'm suppose to do anything else
16:10stuartsierrajasonjckn: Have you sent in a signed C.A.?
16:10jasonjckncan I e-mail the agreement?
16:10jasonjcknno
16:10amalloyjasonjckn: no, signed on dead trees only
16:10jasonjcknah that's annoying
16:10stuartsierraSo far Rich has always asked for signed paper.
16:11amalloyah, i like the invoke-2-fns thing, jasonjckn
16:11jasonjcknis there a contributors list for that trouble at least?
16:11jasonjcknah i see
16:11amalloy~contribute
16:11clojurebotcontribute is http://clojure.org/contributing
16:12jasonjcknthat's a lot more people than I thought
16:12brehautnot everyone on there has actually contrubuted to clojure though; just signed the form
16:12amalloyit's not the case that everyone with a CA has contributed
16:13amalloythat's the clojure/dev list, which is a lot larger and less powerful than clojure/core
16:13jasonjcknhow backwards
16:13technomancylooks like the total number of contributors is 79
16:14jasonjckndo I get git credentials?
16:14brehautjasonjckn: i signed the form despite not having anything to contribute because its a bloody long way for snail mail from new zealand and didnt want to get caught waiting if i did have something to contribute
16:14jasonjckn*nods*
16:14technomancyjasonjckn: become Rich Hickey
16:14jasonjcknis he the only one?
16:14brehauthis hair has a seperate account
16:14brehautits also got credentials
16:15amalloyjasonjckn: you (can) get commit rights to contrib, but not to core, i believe
16:15samaaronYou could make a hammock out of Rich's hair
16:15jasonjcknI would be okay with reincarnating as Rich Hickey's hair, with git credentials
16:15jasonjcknit's already quite an honor
16:15stuartsierraOnly 4 people have commit access on Clojure.
16:15jasonjcknk
16:15amalloyany changes you want to make go through JIRA patches, to be applied by someone else
16:15technomancystuartsierra: is one of them named Hudson?
16:16jasonjcknas far as benevolent dictators go, rhickey is not too bad
16:16stuartsierratechnomancy: yes
16:16stuartsierraAnd we're under strict instructions not to commit anything until Rich has personally OK'd it.
16:18technomancyclojurebot: bus factor is best if you try not to think about it. (https://github.com/clojure/clojure/graphs/contributors)
16:18clojurebotIk begrijp
16:25TimMcHow come there are all those other committers?
16:25TimMc(Or at least authors.) Were pull requests accepted once upon a time?
16:25technomancyTimMc: git format-patch maintains authorship data
16:25stuartsierraGit preserves the original patch author separate from the committer.
16:25TimMcAh, right.
16:33zanesGetting this stacktrace when I try to lein autotest. Anyone seen this before? https://gist.github.com/cdaf4ee623e33d78f1db
16:35muhoothere's a big difference from wanting to create a cool language, and wanting to lead an open-source community
16:39fliebelmuhoo: What makes you say that?
16:39muhooearlier discussion about bus-factor, commmit access, jira, etc
16:41cmcbrideif I have a string, is there a function in core that will give me all possible sub-strings of length n
16:41fliebelcmcbride: partition
16:41cmcbrideI guess I could do a greedy regex
16:42cmcbridethat doesnt seem like all of them
16:42cmcbrideif I have "abcd", I want "ab", "bc", "cd"
16:42fliebel&(partition 3 1 "abcd")
16:42lazybot⇒ ((\a \b \c) (\b \c \d))
16:42cmcbridepartiton would just give me "ab" "cd"
16:42fliebel&(partition 2 1 "abcd")
16:42lazybot⇒ ((\a \b) (\b \c) (\c \d))
16:42cmcbrideoh oops
16:42cmcbridethanks
16:43jasonjckni did some really basic benchmarking of reducers http://pastebin.com/DSm69GZu very impressive performance
16:43jasonjckn(dual core machine)
16:44adeelkhhey dnolen, mori looks really cool. what potential applications does it have, in your opinion? i mean, why wouldn't you just use clojurescript? :)
16:45amalloyjasonjckn: yeah, pretty impressive. and it should get better still if you compare multiple layers of lazy sequences like (reduce + (map inc (filter even? (range 10000))))
16:45jasonjckn*nods*
16:45dnolenadeelkh: thanks
16:45amalloycmcbride: you want combinations
16:45technomancyzanes: I think lein-autotest is abandoned
16:45dnolenadeelkh: I could but that means people I code w/ have to know Lisp.
16:45amalloyno, never mind
16:46dnolenadeelkh: Mori is a good way to get a lot of the good stuff w/o everyone needing to understand Clojure.
16:46kmicu(let [{k v} {:k 1}] println (str k v))
16:47dnolenadeelkh: I think Mori is useful for any JS application where you want to have more sensible state management and perf is not the ultimate concern - which is a lot of JS programs :)
16:47jasonjcknamalloy: http://pastebin.com/iz8bzrdw with a map
16:47zanestechnomancy: Okay, thanks. Seems like midje is the new hotness?
16:48muhoois it expected behavior that a noir middleware would run 3 times per each request? https://www.refheap.com/paste/2684
16:48adeelkhdnolen: ah, ok. makes sense.
16:48jasonjcknamalloy: the clojuer.core one is 2x slower, the others are more around 1.3x slower :)
16:48technomancyzanes: I think most people just use clojure.core with editor integration
16:49technomancyzanes: it's easy to make clojure.test tests run whenever you save in swank-clojure, for instance
16:49dnolenadeelkh: I would certainly use it over any other existing FP JS lib, Mori leverages CLJS so it's chock filled with data structures and tools :)
16:49technomancyzanes: no reason lein-autotest couldn't be upgraded to work with clojure.test though
16:49technomancydakrone: ^ right?
16:50zanestechnomancy: You mean with a post save hook or something like that?
16:50technomancyzanes: yeah
16:50zanesGot it. Okay.
16:50brehautdnolen, adeelkh: has datastructurse at all puts it way above most JS libs
16:50muhooi am looking to build a noir handler that has side-effects, is why i'm asking
16:51muhoosorry, a middleware
16:51technomancyzanes: in fact, clojure-test-mode's "run these tests" command will prompt you to save anyway, so if you're using Emacs, that's the way to go
16:51technomancyseems like the whole "watch for filesystem changes and run X" should be extracted into its own library if it hasn't been already though; I know of at least three independent reimplementations
16:52adeelkhdnolen: what other FP libraries are there for javascript?
16:53stuartsierratechnomancy: I've offered my Lazytest stuff as a contrib. Brenton Ashworth has been working on refactoring it into an independent library.
16:53zanesI didn't even know about clojure-test-mode.
16:53dnolenadeelkh: wu.js, underscore.js, fun.coffee (which I did), http://osteele.com/sources/javascript/functional/, probably many others.
16:53technomancystuartsierra: cool. did your implementation poll, or did it hook into OS-level filesystem notifications?
16:53stuartsierrapoll
16:54technomancyyeah, lot sure the latter is possible without JNI =(
16:55adeelkhdnolen: cool thanks. a while ago i was looking for a functional approach to DOM manipulation but there doesn't seem to be anything
16:56dnolenadeelkh: what kind of DOM manipulation?
16:56nDufftechnomancy: believe it is currently, though that's a relatively new thing
16:57technomancynDuff: nio or some such?
16:57technomancynio2?
16:59nDuffThought it was newer than NIO... but not having much luck googling it up; all the JNI-based libraries are adding a fair bit of clutter.
16:59technomancyI think NIO2 is new in java 7
16:59adeelkhdnolen: well basically something along the lines of clojurescript's clojure.browser.dom, but in javascript
17:00dnolenadeelkh: i see
17:03gozaladnolen: question regarding mori and publishing to npm
17:04dnolengozala: go ahead
17:04gozaladnolen: are you ok with adding package.json to your repo ?
17:04dnolengozala: yep
17:05gozalabut then you'll need to install npm and create an account to publish
17:05gozalaI can send pull request with package.json
17:05dnolengozala: excellent
17:05dnolengozala: I have npm installed, just need to create an account I guess.
17:06gozaladnolen: oh and there is on more thing
17:06gozalaexports have to be set on exports object
17:07gozalais that something that can be done with cljsbuild ?
17:08dnolengozala: not really, we really need a shell script any how.
17:08dnolengozala: to wrap mori.js in a function closure when running the browser.
17:08dnolenrunning in
17:09dnolengozala: so one script for the node build, and one for browser I think.
17:09clojurebotClojureScript is https://github.com/clojure/clojurescript
17:09gozaladnolen: btw readme sugests that non-reducers based map/filter is faster or do I missunderstand ?
17:10dnolengozala: that's comparing native fp ops on primitive JS arrays.
17:11dnolengozala: reducers will be faster than the CLJS seq oriented map/filter/reduce
17:11gozaladnolen: Oh right I have not realized it was native arrays
17:12gozaladnolen: BTW did you had chance to digg into reducers yet ?
17:12dnolengozala: compared against primitive arrays that pretty impressive - given that there's a lot left to optimize in CLJS.
17:12dnolengozala: nope
17:12dnolengozala: but using them is easy :)
17:12gozaladnolen: I'm just trying to figure out if you can consume reducer lazily
17:13gozalaor to be more precise pause consumption and then continue from wherever you left
17:14dnolengozala: I don't know
17:15gozalaYeah maybe you can tweet after ny clojure ;)
17:15ivanjasonjckn: where did your r/repeat come from in the benchmark?
17:16jasonjcknivan: uncommitted code http://dev.clojure.org/jira/browse/CLJ-994
17:16ivanhah, thanks
17:23TimMc$mail foxdonut Urgh, Spring's JDBC thing apparently just splits on semicolons! http://stackoverflow.com/questions/3768815/spring-datasourceinitializer-splits-trigger-ins-sql-by-delimiter
17:23lazybotMessage saved.
17:23technomancyha ha
17:23TimMc:-(
17:27gozaladnolen: I can't load mori seems to dislike t("mori.rmap", reducers.map);
17:27gozalaI suspect that may be something with my cljs version
17:28cmcbridegozala: you need the HEAD version of clojurescript
17:28dnolengozala: mkdir checkouts, clone clojurescript into it.
17:29gozaladnolen: also version here has same issue https://github.com/swannodette/mori/downloads
17:30dnolengozala: oops looking into it
17:35weavejesterDoes anyone have any ideas about the best way to bind a cached value to a record representing a ref?
17:35uvtcHow can I access the docstring for a namespace? For a simple project named "foo", using lein 2, the following doesn't work: `(doc foo.core)`
17:35weavejesterI mean, I could have the cache inside the record, but that seems inelegant.
17:36technomancy,(doc (the-ns 'clojure.string))
17:36clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to clojure.lang.Symbol>
17:36weavejesteruvtc: doc works for me. Have you required the namespace?
17:36technomancyoops
17:36weavejester,(doc clojure.string)
17:36clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.ClassNotFoundException: clojure.string>
17:36uvtcweavejester: This is after starting up `lein repl`
17:37weavejesteruvtc: I just tested it. Try (require 'foo.core) then (doc foo.core)
17:37dnolengozala: thx, should be fixed now
17:37uvtcweavejester: Thanks, but that's still not working. It's telling me: foo.core=> (doc foo.core)
17:37uvtcClassNotFoundException foo.core java.net.URLClassLoader$1.run (URLClassLoader.java:217)
17:37gozalaI'll give it a try
17:38uvtcweavejester: I've got ":main foo.core" in my project.clj. Trying it without that.
17:38weavejesteruvtc: Have you required it?
17:39weavejesterNot sure it would work if you were inside the ns...
17:39uvtcweavejester: Yes, I required it.
17:39weavejesterAnyway… :) - caching… should a cache be stored inside a record, or weakly refed to the record?
17:39weavejesteruvtc: When I load up a REPL and do: (require 'ragtime.core) (doc ragtime.core) it works
17:40gozaladnolen: can you successfully build it ?
17:40dnolengozala: yes
17:40dnolengozala: but you need to build against ClojureScript HEAD
17:40gozalaI just got SEVERE: /Users/gozala/Projects/mori/.lein-cljsbuild-compiler-0/mori.js:4: ERROR - required "clojure.core.reducers" namespace never provided
17:40gozalagoog.require('clojure.core.reducers');
17:40gozalabut it seems to work though
17:40dnolengozala: lein cljsbuild clean
17:41dnolengozala: try again
17:41gozalaahh
17:41uvtcweavejester: Hm. Thanks. I tried removing the ":main foo.core" from project.clj, but that didn't help. My ns macro in core.clj looks like this: (ns foo.core
17:41uvtc "docstring for this namespace"
17:41uvtc (:require fs.core clojure.string))
17:41gozaladnolen: so does exports now create globals ?
17:41gozalain js version I mean
17:42weavejesteruvtc: When I write: (ns foo.core "foobar") (doc foo.core) it works for me too.
17:42dnolengozala: no ^:export just prevents GClosure symbol obfuscation
17:42weavejesteruvtc: What version of Clojure are you running this under?
17:42uvtcweavejester: 1.4 (just a sec, afk)
17:43dnolengozala: everything in mori.js gets added to a mori object. However all the CLJS stuff is global, thus we want a fn closure for that stuff.
17:43gozaladnolen: BTW I still see that warning even after `lein cljsbuild clean`
17:44dnolengozala: did you change project.clj?
17:44weavejesteruvtc: Ah, okay, I see the error.
17:44gozalaI pulled from your repo
17:44dnolengozala: which version of lein are you using?
17:44pcavsI have a core.logic question: How would I create a relation that would be similar to (== (> a b) true) or (== (> a 5) true)
17:45dnolenpcavs: look at core.logic.arithmetic
17:45gozaladnolen: 1.7.0
17:45dnolengozala: and that error occurs while building?
17:45pcavsdnolen: muchos gracias
17:46gozalayeah I run lein deps && lein cljsbuild once release
17:46uvtcweavejester: {back} sorry about that.
17:46felideonmuchas*
17:46uvtcweavejester: What error do you see?
17:46gozalaand I see it durinc compilation
17:46weavejesteruvtc: The error exists in 1.4, not in 1.2. Let me check 1.3.
17:47dnolengozala: and you made the checkouts directory?
17:47weavejesteruvtc: In 1.3 too… at least when I'm in the namespace
17:47dnolengozala: and cloned clojurescript into it?
17:47gozalayeap and symlinked to lates clojurescript
17:47dnolengozala: try w/o symlink, just clone it into checkouts
17:48gozalaok
17:48gozalait worked with symlinks before though
17:48dnolengozala: your probably right, but better just to do exactly the same steps.
17:48weavejesteruvtc: Odd. "doc" doesn't seem to work for namespaces at all for 1.3 and above. You could do (:doc (meta (the-ns 'foo.core)))
17:50weavejesteruvtc: (find-doc "foo.core") works
17:51uvtcweavejester: going straight into the repl and trying `(:doc (meta (the-ns 'foo.core)))` just returns nil for me.
17:51gozaladnolen: ok so it has to do something with symlink or with my clone
17:51gozalait works with just cloning
17:51dnolengozala: cool
17:51weavejesteruvtc: Try just (meta (the-ns 'foo.core)) then?
17:52gozaladnolen: thanks
17:52weavejesteruvtc: Or even (the-ns 'foo.core)
17:52uvtcweavejester: Hm. `(find-doc "foo.core")` also returns nil.
17:52uvtcweavejester: as does ` (meta (the-ns 'foo.core))`
17:52uvtcweavejester: (I know I've got a docstring in there, and I know I'm in the right directory...)
17:53weavejesteruvtc: Are you sure you have that namespace? If you do (the-ns 'foo.core) does it exist? Have you required it?
17:53uvtcweavejester: foo.core=> (the-ns 'foo.core)
17:53uvtc#<Namespace foo.core>
17:53weavejesteruvtc: And it has no metadata?
17:53uvtcweavejester: foo.core=> (meta (the-ns 'foo.core))
17:53uvtcnil
17:53gozaladnolen: symlinks work as well it's just I have fetched but forgot to merge in my cljs dir
17:54weavejesteruvtc: Try: (ns foo.core "foobar") (meta (the-ns 'foo.core))
17:55dnolengozala: gotcha
17:55uvtcweavejester: foo.core=> (ns foo.core "foobar") (meta (the-ns 'foo.core))
17:55uvtcnil
17:55uvtcnil
17:56jasonjcknin the reducers blog post rhickey writes "Those IFn.LLL, DDD etc primitive-taking function interfaces can now spring to life."
17:56jasonjckncan someone expand on this?
17:56uvtcweavejester: Just triple-checked. I'm in the correct dir, looking at the correct files. My lein repl prompt tells me I'm in: "foo.core=>".
17:57jasonjcknI googled LLL and DDD and nothing came up, except that blog post
17:57ivanjasonjckn: long long long, double double double?
17:57jasonjcknthat was my guess too
17:57jasonjcknbut I still don't know what he wants for reducers..
17:57TimMcjasonjckn: Have you looked at IFn.java in clojure core?
17:57jasonjcknIs IFn.LLL a real thing right now?
17:58jasonjcknnop,i'll check it out
17:58weavejesteruvtc: Maybe the problem is that ns doesn't overwrite
17:58uvtcweavejester: I can call the little functions I've defined in my core.clj file, and at the top of that file is the `(ns foo.core "docstring for this namespace" (:require fs.core clojure.string))`. Maybe I should try removing those :requires...
17:58TimMc&org.clojure.IFn$LOL
17:58lazybotjava.lang.ClassNotFoundException: org.clojure.IFn$LOL
17:58stuartsierrajasonjckn: The nested classes in IFn are interfaces for primitive-taking functions.
17:58TimMc&clojure.lang.IFn$LOL
17:58lazybot⇒ clojure.lang.IFn$LOL
17:58weavejesteruvtc: Try a completely new namespace: (ns another.core "foobar") (meta (the-ns 'another.core))
17:59uvtcweavejester: ok, just a sec.
17:59stuartsierraamalloy: I can't screen your patches until I know enough about the reducers implementation to understand them. But I've passed the word around.
17:59uvtcweavejester: lein new another ... changing the project.clj to use 1.4...
18:00weavejesteruvtc: Don't actually create a file for it. Just generate the namespace in the REPL.
18:00weavejesteruvtc: Literally just type: (ns another.core "foobar") (meta (the-ns 'another.core)) in your REPL.
18:00uvtcweavejester: Oh. Whoops. Ok.
18:01uvtcweavejester: foo.core=> (ns another.core "foobar") (meta (the-ns 'another.core))
18:01uvtcnil
18:01uvtc{:doc "foobar"}
18:01weavejesteruvtc: Okay, that's good :)
18:02weavejesteruvtc: So you must be creating your other namespace without a docstring somehow.
18:02uvtcweavejester: :). Also, now my prompt says "another.core=>"
18:02weavejesteruvtc: Change out of it with (in-ns 'user)
18:02uvtcweavejester: ok.
18:03weavejesteruvtc: What does your foo.core ns declaration look like?
18:03uvtcweavejester: tried again (doc foo.core), (require 'foo.core) (doc foo.core) but got the same as before.
18:03uvtc(ns foo.core
18:03uvtc "docstring for this namespace")
18:03uvtcweavejester: ^
18:04weavejesteruvtc: Try restarting your REPL? Maybe ns doesn't overwrite the docstring and you loaded a version without the doc.
18:05uvtcweavejester: Thanks for the suggestion, though, I've been restarting it as we've been trying here.
18:05weavejesteruvtc: Yes, it looks like ns doesn't override existing namespace metadata.
18:05weavejesteruvtc: Are there any other instances in your source tree where you create the foo.core namespace?
18:06uvtcweavejester: no, this is just a trivial project I created for testing stuff.
18:06weavejesteruvtc: Hm… So there's no other (ns foo.core) around?
18:07weavejesteruvtc: Not even in, say, your test directory?
18:07uvtcweavejester: Just what lein2 put there (core_test.clj).
18:07uvtcweavejester: trying this with a clean new project...
18:08weavejesteruvtc: You could also try seeing if Lein is hooking into any processes that are left running.
18:08uvtcweavejester: john@foil:~/temp/another$ ps -ef | grep -i lein
18:08uvtcjohn 28956 20523 0 18:07 pts/2 00:00:00 grep --color=auto -i lein
18:08uvtcjohn@foil:~/temp/another$ ps -ef | grep -i java
18:08uvtcjohn 28958 20523 0 18:07 pts/2 00:00:00 grep --color=auto -i java
18:08weavejesteruvtc: Try it with a new project I guess...
18:09uvtcweavejester: user=> (doc another.core)
18:09uvtcClassNotFoundException another.core java.net.URLClassLoader$1.run (URLClassLoader.java:217)
18:09uvtcweavejester: user=> (require 'another.core)
18:09uvtcnil
18:09uvtcuser=> (doc another.core)
18:09uvtcClassNotFoundException another.core java.net.URLClassLoader$1.run (URLClassLoader.java:217)
18:09weavejesteruvtc: Yeah, but we know the doc macro is broken for namespaces
18:09weavejesteruvtc: Try the (meta (the-ns 'another.core))
18:10weavejesteruvtc: Ensuring it has a docstring, of course.
18:10uvtcweavejester: thanks for the clarification. user=> (meta (the-ns 'another.core))
18:10uvtc{:doc "docstring for another "}
18:10uvtcweavejester: works!
18:10weavejesteruvtc: I wonder what's different to your other project then...
18:10uvtcweavejester: Oh, I hadn't added ":main another.core" yet.
18:11uvtcweavejester: trying that. ...
18:11uvtcweavejester: another.core=> (require 'another.core)
18:11uvtcnil
18:11uvtcanother.core=> (meta (the-ns 'another.core))
18:11uvtcnil
18:12weavejesteruvtc: Curious. Raise it as an issue on Leiningen, perhaps.
18:12uvtcweavejester: thanks alot for your time!
18:12pikappif i were to implement my own version of Long.valueOf(String) what would be a good way of doing it?
18:12weavejesteruvtc: No problem. I'll send a message to clojure-dev about clojure.repl/doc
18:12pikappwhoops, wrong room
18:13weavejesteruvtc: Ah, it's already a known issue: http://dev.clojure.org/jira/browse/CLJ-902
18:14patchworkmy app is depending on two different versions of hiccup, and I don't even have it listed in my dependencies!
18:14uvtcweavejester: thanks for that link. (Looks like it's slated to go in 1.5?)
18:14patchworkHow is this possible?
18:15patchworkIs there a way to see what is depending on a certain jar?
18:15weavejesteruvtc: Or 1.4.1. My guess about the Leiningen :main issue is that it creates a blank namespace before loading your source file.
18:16weavejesteruvtc: And the ns macro doesn't add any metadata if the namespace already exists.
18:16technomancypatchwork: `lein deps :tree` if you're using lein2
18:16technomancypatchwork: otherwise `lein pom && mvn dependency:tree`
18:16uvtcweavejester: Ok. Will add an issue in lein's issue tracker at github. Thanks.
18:17weavejesteruvtc: No problem :)
18:17patchworktechnomancy: perfect! thank you
18:18weavejesterWhat do people think about putting atoms or other refs inside records or types?
18:18di-csuehsI'm beating my head against something stupid, trying to deploy a noir app in Tomcat
18:18weavejesterIt kinda ruins their print-ability.
18:20pcavsdnolen: do you have any examples for how to use core.logic.arithematic?
18:20weavejesterI wonder if a cache pointer counts as metadata...
18:20dnolenpcavs: not handy no, are you confused by something?
18:20eggsbyI want to see 'SEND MORE MONEY' in core.logic
18:21dnolengozala: merged your changes, thx!
18:21eggsbygoogle is my friend
18:21eggsbyhttps://gist.github.com/2364695
18:22dnoleneggsby: which is slow in the current core.logic, would be faster w/ cKanren extensions.
18:22pcavsdnolen: I think my problem is understanding how goals, run*, and relational vs non relational all interact. I think I just need to sit down with my reasoned schemer and read some more.
18:22technomancyweavejester: I've wanted memoize's cache atom to be stored in metadata since forever
18:23gozaladnolen: cool! you're welcome ;)
18:23eggsbytbh core.logic is way over my head and I have no idea how to approach it (it being my first introduction to logic programming), I'm in love w/ core.match, though
18:23weavejestertechnomancy: I guess it is data about data
18:23dnoleneggsby: great!
18:24amalloyweavejester: i put atoms and refs inside records and types whenever i have a record or type that needs an atom or a ref :P
18:24weavejesteramalloy: It kinda spoils printability though… and I only need the atom for a cache.
18:25eggsbywhat is the best way to dip my toes into the logic programming world, it seems pretty all or nothing from what I can tell, whereas pattern matching I can integrate into stuff I've already written
18:25eggsbylogic programs are pretty much purely logical programs, right?
18:27eggsbyand another unrelated note... is there some lein plugin I can use to simplify stacktraces so they don't include the clojure implementation logic in the trace? (i.e. no .java files)
18:27technomancyoh crap
18:27technomancyI forgot to merge that branch of clj-stacktrace
18:27weavejestereggsby: I think they need to operate in their own little world, but their outputs can be used by anything.
18:28technomancyit's been sitting there forever =\
18:28weavejestertechnomancy: I occassionally have times when that happens.
18:28weavejestertechnomancy: Occassionally ;)
18:28dnolengozala: so will 'npm publish' trigger the build part?
18:28technomancyweavejester: I'd feel worse if it weren't my own branch =)
18:29technomancyoh that's right; I was waiting on longbottom.
18:29gozaladnolen: nope
18:29gozalayou have to run npm run build first
18:30gozaladnolen: although it's a good point I think there might be a hook on npm to atuomate that
18:30gozalaon publish
18:30dnolengozala: k I think published it
18:31gozaladnolen: so if you change in package.json scritps bulid to prepublish
18:31gozalait should do it on npm publish
18:32dnolengozala: so change "build" key to "prepublish" ?
18:33gozalayeah
18:33tomojreally excited about mori. getting this error trying to build: https://gist.github.com/7dab21323787b9ef35b5
18:33tomojclues?
18:33tomojcleaned my clojurescript, pulled master, and rebootstrapped it
18:34dnolentomoj: are you sure you pulled master?
18:34ivanmaybe you have another closure-library in your classpath?
18:34dnolenMori 0.1.0 on npm
18:34tomoj2469b7c0
18:34tomojsweet
18:35tomojsrc/cljs/clojure/core/reducers.cljs exists in $CLOJURESCRIPT_HOME
18:36dnolentomoj: are you building via creating checkout dir and cloning into it?
18:36dnolencheckouts dir I mean
18:36tomojmy bad
18:36tomojthanks
18:37tomojwas too excited to read apparently
18:45devnhmm, how does clojure.pprint/code-dispatch work
18:45dnolentomoj: haha, makes sense. Mori is something JS devs can start using at work today :)
18:46devni remember using (with-pprint-dispatch *code-dispatch* string)
18:46devnis that still the idea? the earmuffs are gone these days
18:49devnnevermind
18:49devni needed to call read-string on it :\
18:51dakronetechnomancy: correct
18:52technomancydakrone: re: autotest?
18:56dakronetechnomancy: yea, albeit a fair about of work, I'll put it on the todo list
18:56dpritchettbeen staring at mapcat for a long time trying to figure it out
18:56dpritchettspecifically (apply map list [[1 2 3] [4 5 6] [7 8 9]])
18:57dpritchetti read the source so i understand that it's (apply concat (apply map f colls)) i just don't quite get it
18:58technomancydakrone: maybe you can get zanes to do it =)
18:58zanestechnomancy: Too late. I'm happy with clojure-test-mode. ;)
18:58technomancyoops, too late =)
18:59ivan&(map list [1 2] [3 4])
18:59lazybot⇒ ((1 3) (2 4))
18:59ivan&(map vector [1 2] [3 4])
18:59lazybot⇒ ([1 3] [2 4])
18:59dpritchett(i dont really understand that result ivan
19:00dpritchettohh, i didnt understand how map worked with multiple collections
19:00dpritchetti only ever used it with a single collection
19:00ivanyep, it can do that :)
19:14uvtcweavejester: filed the issue, <https://github.com/technomancy/leiningen/issues/575&gt;, but technomancy pointed out that it's actually a bug in Clojure (#CLJ-130)
19:15weavejesteruvtc: Okay :)
19:33KognizantKogHi, guys. I am currently learning clojure and was wondering if anyone knew of any examples of using XNA with ClojureCLR? I've tried searching, but came up with nothing. Just curious.
19:52locojayhi i m new to clojure. how can i map a function over a sequence the function takes two args one fixed and an iterator. (defn funtomap [val1,val1] (+ val1, val2)) now need to map funcmap to a vec [1,2,3] with a fixed value for val1 say 5 to get [6,7,8]
19:53thearthurlocojay: (repeat [5])
19:54thearthurerr (repeat 5)
19:54thearthurno []
19:55thearthur(map + [1 2 3] (repeat 5))
19:55locojaythearthur: thanks
20:05gfredericks,(map (partial + 5) [1 2 3])
20:05clojurebot(6 7 8)
20:06thearthur,(8)
20:06clojurebot#<ClassCastException java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn>
20:07thearthur,'(8)
20:07clojurebot(8)
20:07tomojis it impossible to extend ISeqable etc to the arguments objects in js?
20:08thearthurhehe the 8) renders as an emoticon in Colloquy, clojure bot is happy to see me
20:09tomoj`(function() {return arguments.__proto__;})(1) == Object.prototype` returns true :'(
20:11thearthur,`(function() {return arguments.__proto__;})(1) == Object.prototype`
20:11clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: EOF while reading>
20:11thearthur,(function() {return arguments.__proto__;})(1) == Object.prototype
20:11clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: EOF while reading>
20:11tomojin javascript of course
20:12thearthur,(symbol ":'(")
20:12clojurebot:'(
20:12gfredericks,:-D
20:12clojurebot:-D
20:13thearthurmuch easier to make clojurebot happy than sad
20:16locojaytheatur : strange this does not work in my case on this https://gist.github.com/2663252 mq is zmqhelper
20:16locojayhttps://github.com/imatix/zguide/blob/master/examples/Clojure/zhelpers.clj
20:17locojaymq/send-more does not even get called
20:19hiredman~map
20:19clojurebotmap is hard
20:19hiredman~map
20:19clojurebotmap and the other sequence functions used to be lazy, but with the advent of chunked sequences, may or may not be lazy, consult your local ouija board
20:19hiredman~map
20:19clojurebotmap is hello, my name
20:19hiredman~map
20:19clojurebotmap is lazy
20:19thearthurlocojay: map is lazy
20:19hiredmanthats the one
20:19locojayah k
20:20thearthur~last
20:20clojurebotIt's greek to me.
20:20gfredericksclojurebot: last is not lazy
20:20clojurebotIn Ordnung
20:23locojay~doseq
20:23clojurebotdoseq is like for, but for side effects instead of values
20:23locojayand works in this case :)
20:40muhoo~greek
20:40clojurebotExcuse me?
20:40muhoo~opa!
20:40clojurebotTitim gan éirí ort.
20:40muhooit's irish tome
20:40muhooto me
20:43amalloycan someone confirm for me that in (extend-type Foo Proto (proto-fn [this] (.blah this))), the `this` object is typehinted so that .blah is fast?
20:49tomojso I'm thinking of exposing apply in mori (I have an underscore.js mixin for this currently). but it would be nice if it would work on `arguments` too. unfortunately it seems impossible to extend ISeqable to arguments. any workaround ideas? I thought of having `mori.arguments()` return the arguments as an array, but that seems impossible too
20:49dnolenamalloy: it is, otherwise core.logic would be dog slow.
20:53_KY_I'm using enclojure, built the hello world project, but when run it says <cannot find main class>. what to do?
20:55dnolenif anybody wants to help w/ documenting Mori that would be awesome :)
20:57gfredericksin core.logic, if a goal has several clauses that are quite similar, should it be possible to refactor out the similarities without using macros?
20:57tomojdnolen: how do you build it for node.js? was getting main-cli-fn problems trying to just change the target to :nodejs
20:57gfredericksnevermind that is a silly and nebulous question.
20:58rbxbxdnolen: it seems pretty well documented to me, what did you have in mind?
20:59tomoj(setting *main-cli-fn* to a noop at the bottom of mori.cljs didn't help)
20:59dnolentomoj: npm build run
20:59dnolenrbxbx: heh, well documented for fp heads and Clojure users :)
20:59tomojpackage.json missing?
20:59tomojoh I can steal it
21:00dnolenrbxbx: would be nice to get Underscore.js level of documentation.
21:00amalloydnolen: thanks
21:00dnolenrbxbx: for JS devs.
21:00dnolentomoj: steal it? it's in the repo
21:01tomojah, pulled, thanks,
21:01rbxbxdnolen: marginalia style?
21:02rbxbxdnolen: it might be nice to have a side by side – when you would do x in JS, you could do y if you were using mori... not sure if that belongs in docs though?
21:03dnolenrbxbx: side by side would be nice - but just having the usage like Underscore.js would be enough I think.
21:03dnolenrbxbx: what I would truly love
21:04dnolenrbxbx: fancy intro page a la Handlebar.js + Underscore.js doc page.
21:04zanesDoes defrecord give me a test function as well?
21:05rbxbxdnolen: ooo, indeed. Hadn't seen Handlebar.js's homepage before. Very well done.
21:09rbxbxdnolen: I may take a stab at that tomorrow, not sure I have the bandwidth tonight. It would also have the pleasant side-effect of forcing me to understand what everything in Mori does ;)
21:10gfrederickseither the core.logic != macro is deeply hard for me to understand or else the README has a typo.
21:10dnolenrbxbx: that would awesome :)
21:11dnolengfredericks: != is a bit strange - it's a disequality constraint
21:12gfredericksdnolen: I read the docstring and still cannot explain the readme
21:12gfredericksif it weren't for the readme I would assume I understood !=
21:13dnolengfredericks: it just guarantees that two terms can never unify.
21:13gfredericksdnolen: so (!= [x 2] [y 1]) should have no effect, since (not= 2 1), right?
21:13dnolen(!= [x 1] [2 y])
21:13amalloyanyone remember what {:static true} means on a defn? it looks to me like the current version of the compiler completely ignores it, i just want to make sure that's true
21:13gfredericksah okay; so typo it is
21:15technomancyamalloy: yeah, it's ignored now. it was an experiment for an opt-in way to turn off ^:dynamic-by-default, but it never worked quite right
21:15dnolengfredericks: oops, fixed now
21:16dnolengfredericks: I think someone had mentioned that before but it wasn't clear to me it was I typo
21:16gfredericksdnolen: looks great, thanks
21:17technomancyleiningen 2.0.0-preview4 released
21:18technomancy`lein upgrade` should pull it in if you're on preview3
21:37lynaghk`technomancy: wooo, thanks.
21:42brehautdnolen: do you need JDK7 to build mori now that its got reducers?
21:42dnolenbrehaut: haha no :)
21:42dnolenbrehaut: ain't no fork/join in JS :)
21:43brehautdnolen: hmm. i get "ERROR - required "clojure.core.reducers" namespace never provided
21:43brehautgoog.require('clojure.core.reducers');" trying to build
21:43dnolenbrehaut: yes this has been plaguing everyone all day :)
21:43dnolenbrehaut: you need to create the checkouts directory
21:43brehautaah :) sorry about that
21:43dnolenbrehaut: you need to clone ClojureScript repo into there as clojurescript
21:43dnolenbrehaut: then you can build.
21:44dnolenbrehaut: it's says that in the instructions, but I guess people are excited and skimming :)
21:44brehautdnolen: i havent reread the instructions since last night
21:44dnolenbrehaut: oh yeah, sorry - instructions have changed a bit.
21:45brehautso i see, sorry to be an arse then
21:45brehautdnolen: it looks like mori is missing juxt ?
21:45brehautand i guess its pair which amalloy has called knit in useful
21:46dnolenbrehaut: if you add it and send I pull request I will merge it.
21:46brehautcool :)
21:46dnolensend a pull
21:46brehautgot to write it and build it first ;)
21:46brehaut'write it'
21:51_KY_Can I mix java and clojure code in the same project?
21:51jasonjckn_KY_: yes
21:52jasonjckn_KY_: you can mix any JVM language
21:52technomancywell
21:52technomancycurrently Leiningen only has plugins for Java, Scala, and Groovy
21:52technomancythough IIRC there's one for JRuby in development
21:53_KY_I'm using intelliJ now
22:00brehautcrap. need to learn asciidoc
22:00brehautor soething?
22:00brehautoh, no i just apparently dont understand markdown
22:01brehautdnolen: are you wanting to use vectors for tuple shaped stuff in mori, or JS arrays?
22:08dnolenbrehaut: ?
22:08brehautdnolen: i might be missremembering, but last night you were talking about tuples using native JS arrays
22:09dnolenbrehaut: hmm, I'm not following, tuples where?
22:09brehautdnolen: the result of juxt for instance
22:09brehautin clojure(script) they are vectors but used more like tuples
22:10dnolenbrehaut: I think Mori should cater in general to JS usability
22:11dnolenbrehaut: in fact where it makes sense to reimplement CLJS functionality for JS usability, it probably makes sense to do so.
22:11dnolenbrehaut: if we return an array - then CS or JS destructuring works.
22:11brehautdnolen: that was my thought too
22:12brehautand all the cljs functions that take seqs and vectors work sensibly when presented an array?
22:12dnolenbrehaut: you can see this thinking in Mori - we don't use CLJS inc, dec, mod, etc.
22:12dnolenbrehaut: yes
22:12brehautright
22:13brehautso you would also implement identity and constantly from scratch too?
22:13dnolenbrehaut: only if they aren't already single arity.
22:13dnolenbrehaut: CLJS multiy arity fns are costly.
22:14dnolenbrehaut: but code generated for single arity CLJS fns is good.
22:15brehautok cool
22:15brehautdnolen: i'll send a pull request for juxt and knit, but i think we might want to reconsider using arrays instead of vectors
22:16dnolenbrehaut: what do you mean reconsider?
22:16brehautdnolen: well at the moment ive just used vectors for tuple-y values
22:17brehautdnolen: https://github.com/brehaut/mori/blob/master/src/mori.cljs#L105-107
22:17brehautbbs
22:17brehautgot to run an errand
22:23austinhI didn't understand why ":refer :all" wasn't doing anything. Turns out that it's because that feature is in Clojure 1.4, which I thought I was using (but didn't know that was a new feature anyway, since I'm new to Clojure), and Noir was silently forcing me to use 1.3.
22:24austinhI'm happy I was able to figure it out in less than 20 minutes, since there wasn't much immediate info to go on.
23:00gfrederickswhat are the implications of the "Non-relational." markers in the core.logic docstrings?
23:02jasonjckngfredericks: basically you can't pass fresh variables to non-relational goals
23:03gfrederickshuh. thanks.
23:03jasonjckngfredericks: does that make sense?
23:03gfredericksI think so
23:04jasonjckngfredericks: i always thought of run* in terms of how it searched for successful goals
23:04gfrederickswill it crash if I do or just silently act unexpectedly?
23:04jasonjckni forget what happens
23:04gfredericks:) okay
23:04jasonjckn,(run* [q] (== q 3))
23:04clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: run* in this context, compiling:(NO_SOURCE_PATH:0)>
23:05jasonjckn,(clojure.core.logic/run* [q] (== q 3))
23:05clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.ClassNotFoundException: clojure.core.logic>
23:07jasonjcknnon-relational goals can be written in pure clojure (project [x] (== true (even? x))
23:08jasonjcknif you were to pass fresh variable x, there's no way it could bind x to all the even numbers
23:08gfredericksI wasn't prepared to have to think about whether any of my variables were fresh at arbitrary points
23:08jasonjcknbut if x was already bound to some set, it would run this even? test on the entire set
23:08gfredericksbut I'm still not certain I need the non-relational goals, or that they could solve my problem
23:09jasonjckngfredericks: Well I know of 2 ways to think about it
23:09jasonjcknthe first way is purely in terms of relations from math
23:09gfredericksthat is more ways than I expected
23:09jasonjcknand everythings declarative
23:09jasonjcknthat way is fine, so long as you don't have non-relational goals
23:09jasonjcknthe second way is in terms of a search algorithm
23:10jasonjcknwhich is what you need to do for non-relational goals
23:10jasonjcknthe search ordering corresponds to your statement ordering
23:10jasonjcknSo (run* [q] (== q 3) (project [q] (== true (even? q)))
23:11jasonjcknis fine because the first goal gets executed
23:11jasonjcknand q is bound to set {3}
23:11jasonjcknthen the project happens and q is bound to {}
23:11jasonjcknbut if you reverse the goals it's not valid anymore
23:11gfredericksyeah; it just requires more care
23:11jasonjcknI made these models up in my head, so use them with caution :)
23:12jasonjckni haven't actually read the implementation of the search
23:13gfredericksjasonjckn: that was helpful, thanks.
23:30Rayneswtetzner: Dear Sir, thank you for exploding-fish. Evaluation of all of the existing Clojureish URI libraries has lead me to believe that your offering is top notch and for that, I thank you. You are a gentleman and a scholar, and I think we are to be the best of friends.
23:40echo-areaHello
23:41echo-areaI've simplified the program that reproduces stack overflow a little bit. I'm still trying to simplify it further, but it now can be shared with you to reproduce it. http://pastebin.com/AUJsEV0z <-- Please take a look at it. Does anyone have a clue?
23:44RaynesActually, whoa.
23:44Rayneshttps://github.com/Raynes/exploding-fish/blob/master/src/org/bovinegenius/exploding_fish/query_string.clj#L33 Association lists? O_O
23:44amalloyecho-area: it's exactly what hiredman told you last night. you're building up a big chain of lazy-seqs stacked on top of each other - each call to keep returns a new lazy seq, which has to force the seq below it before it can get anything
23:45amalloy$google clojure stackoverflow dbyrne prime sieve
23:45lazybot[recursion - Recursive function causing a stack overflow - Stack ...] http://stackoverflow.com/questions/2946764/recursive-function-causing-a-stack-overflow
23:46echo-areaamalloy: Okay, it maybe my mistake. Currently it happens only at the end of the file, each of the lazy-seq does nothing but trying to get nil. How would I fix it then?
23:47amalloyi don't think you read that entire SO answer in under a minute. i suggest you read the article i linked to, understand the problem, and then decide on a solution that's suitable for your use case. i certainly don't know what's right for you
23:48echo-areaamalloy: If I reduce the input file's lines, there will be no stack overflow. How do you explain this behavior?
23:48echo-areaOkay, I didn't see that link when I post these messages.
23:48echo-areaLet me read it
23:52PeregrinePDXIt sounds like something you're doing is holding onto the head of your lazy-seq and you're realizing the entire seq. Multiple times... So you have multiple copies of the 10,000 line file in memory at once. Although I am a clojure newbie so I might be completely wrong and I didn't look at your code.
23:52amalloyPeregrinePDX: no
23:53amalloythat leads to a heap overflow, not a stack overflow
23:55PeregrinePDXFair enough. Like I said I'm a newbie.
23:55echo-areaWhat's the default max JVM stack size, BTW?
23:55amalloyit varies by your JVM implementation. something around 2k is normal, i think
23:55echo-areaOkay
23:55amalloy(2k frames, that is. not sure how many bytes)
23:56echo-areaYes, what I meant was too frame size
23:56echo-areaSorry for the ambiguity
23:59_KY_Finding a clojure IDE is a game of finding out at which point in time you'd give up on an IDE saying its unusable... 2 down, one more to go =(