#clojure logs

2015-04-25

10:41gfredericksdoes anybody know of any tools for reducing the redundancy between docstrings and READMEs?
10:44TimMcgzip, I think
10:45dumptruckmanhello
10:45gfredericksTimMc: :P
10:48dumptruckmanlooking for a hint with this koan... "One function can beget another" (= 9 (((fn [] ___)) 4 5))
10:49justin_smithdumptruckman: that function needs to return a function that takes 4, 5 and returns 9
10:49justin_smiththe ___ are the position for a value to be returned
10:50justin_smith,(((fn [] str)) "hello" ", " "world")
10:50dumptruckmanoooh
10:50clojurebot"hello, world"
10:50dumptruckmanthat's why there are 2 sets of paren
10:50justin_smithright
10:52dumptruckmanwell
10:52dumptruckmani thought i had tried to do what you said
10:52dumptruckmanand it didn't work
10:52gfredericks,(((fn [] (fn [] (fn [] print-str)))) 'hello 'more 'worlds)
10:52clojurebot#error{:cause "Wrong number of args (3) passed to: sandbox/eval51/fn--52/fn--53", :via [{:type clojure.lang.ArityException, :message "Wrong number of args (3) passed to: sandbox/eval51/fn--52/fn--53", :at [clojure.lang.AFn throwArity "AFn.java" 429]}], :trace [[clojure.lang.AFn throwArity "AFn.java" 429] [clojure.lang.AFn invoke "AFn.java" 40] [sandbox$eval51 invoke "NO_SOURCE_FILE" 0] [clojure.la...
10:52dumptruckmanbut trying it again it worked
10:52justin_smithgfredericks: I think you needed more parens
10:53gfredericksas usual
10:53gfredericks,((((fn [] (fn [] (fn [] print-str))))) 'hello 'more 'worlds)
10:53clojurebot#error{:cause "Wrong number of args (3) passed to: sandbox/eval81/fn--82/fn--83/fn--84", :via [{:type clojure.lang.ArityException, :message "Wrong number of args (3) passed to: sandbox/eval81/fn--82/fn--83/fn--84", :at [clojure.lang.AFn throwArity "AFn.java" 429]}], :trace [[clojure.lang.AFn throwArity "AFn.java" 429] [clojure.lang.AFn invoke "AFn.java" 40] [sandbox$eval81 invoke "NO_SOURCE_FILE" ...
10:53luoluoluo(println "hello")
10:53gfredericksI give up
10:53dumptruckman,(((fn [] (fn [] (fn [] (print-str))))) 'hello 'more 'worlds)
10:53clojurebot#error{:cause "Wrong number of args (3) passed to: sandbox/eval111/fn--112/fn--113", :via [{:type clojure.lang.ArityException, :message "Wrong number of args (3) passed to: sandbox/eval111/fn--112/fn--113", :at [clojure.lang.AFn throwArity "AFn.java" 429]}], :trace [[clojure.lang.AFn throwArity "AFn.java" 429] [clojure.lang.AFn invoke "AFn.java" 40] [sandbox$eval111 invoke "NO_SOURCE_FILE" 0] [clo...
10:53luoluoluo,(print "hello")
10:53clojurebothello
10:53justin_smith,(((((fn [] (fn [] (fn [] print-str)))))) 'hello 'more 'worlds)
10:53clojurebot"hello more worlds"
10:53dumptruckmani was about to try that next
10:53justin_smithgfredericks: classic, off by one
10:54gfredericksI'm just the idea guy, I don't mess with parens.
10:56dumptruckmanwait...
10:56dumptruckmanthis still isn't working
10:56dumptruckman(= 9 (((fn [] #(* %1 %2))) 4 5))
10:56gfrederickshave you checked what the right bit evals to?
10:56justin_smithdumptruckman: ##(* 4 5) ; last I checked this was not 9
10:56lazybot⇒ 20
10:56dumptruckmandoh
10:57gfredericks,(Math/exp 4 5)
10:57clojurebot#error{:cause "No matching method: exp", :via [{:type clojure.lang.Compiler$CompilerException, :message "java.lang.IllegalArgumentException: No matching method: exp, compiling:(NO_SOURCE_PATH:0:0)", :at [clojure.lang.Compiler analyzeSeq "Compiler.java" 6740]} {:type java.lang.IllegalArgumentException, :message "No matching method: exp", :at [clojure.lang.Compiler$StaticMethodExpr <init> "Compiler....
10:57justin_smithdumptruckman: also #(* %1 %2) is * (given you are guaranteed two args)
10:57justin_smith,(Math/exp 4.0)
10:57clojurebot54.598150033144236
10:57gfredericksaw shucks
10:57justin_smith,(Math/pow 4.0 5.0)
10:57clojurebot1024.0
10:57justin_smithhehe
10:58justin_smithor arities
10:58gfredericksyeah any of those
11:02dumptruckmancan't seem to figure this one out either (= 25 (___ (fn [n] (* n n))))
11:02dumptruckmanmy guess was (fn [f] (f))
11:02justin_smithI think there needs to be a 5 somewhere
11:03dumptruckmanoh right
11:03dumptruckmanthat would make sense >.>
11:03dumptruckmani need more coffee
11:04dumptruckmananyone got any resources for helping to think functionally
11:05dumptruckmanhaving trouble changing my thinking away from the use of mutable state
11:05justin_smithI have heard of some koans...
11:05justin_smith:)
11:05dumptruckmani mean on a more theoretical level
11:06justin_smithdumptruckman: the general principle is actually pretty simple. Anything that needs to "change" must become the argument to a new function call or recursion
11:06justin_smithso that in that new scope the new value replaces the previous (though the original has not mutated)
11:07dumptruckmani mean, i get the principle.. i just feel like i need to read/watch something to help really retrain my innate thinking
11:07dumptruckmanof course maybe i'm just wanting to procrastinate
11:08justin_smithdumptruckman: have you used loop/recur?
11:08dumptruckman;)
11:08dumptruckmanno
11:08justin_smith,(loop [x 0 y 0] (if (> x 100) x (recur (+ x y) (inc y))))
11:08clojurebot105
11:09geirbymorning
11:10justin_smithdumptruckman: it should be clear how the args to that recur are effectively modifying x and y
11:10justin_smithbut it's not a mutation, it's a new binding that does not alter the previous value
11:10justin_smithyou could try it in your repl, with some printing added
11:10geirbywho can tell where ->RedBlackTree come from here http://bit.ly/1GiiYnw ? Is it some feature of deftype I'm not aware of?
11:10gfredericks,(deftype Heyo [])
11:10clojurebotsandbox.Heyo
11:10gfredericks,->Heyo
11:10clojurebot#object[sandbox$eval49$__GT_Heyo__51 0x752f5f2a "sandbox$eval49$__GT_Heyo__51@752f5f2a"]
11:10gfredericks,(doc ->Heyo)
11:10clojurebot"([]); Positional factory function for class sandbox.Heyo."
11:10gfredericksgeirby: yep.
11:12TimMcgfredericks: Here is a ridiculous thing I made: https://github.com/timmc/arrpl
11:12dumptruckmanso
11:12gfredericks"Hmm, I seem to have made a ridiculous thing. Somebody must tell gfredericks about it!"
11:12TimMcexactly
11:12TimMcto be fair, I'm telling everyone
11:12dumptruckmanrecur just changes the values and starts at the beginning of the loop?
11:13TimMc...but especially you. PRs welcome. :-P
11:13justin_smithdumptruckman: it binds new values, nothing truly changed
11:13geirbygfredericks: thanks.
11:13justin_smithdumptruckman: but yes, that's the idea
11:13dumptruckmanso
11:14dumptruckmaneach arg in recur binds to the respective param in loop?
11:14gfredericksTimMc: the idea is to coopt existing copyright statements?
11:14justin_smithdumptruckman: exactly
11:15TimMcgfredericks: Yeah!
11:15justin_smithdumptruckman: also, for things that are not a loop, but just an update, you can use let and binding / shadowing ##(let [a 1 b (inc a) c (+ a b) c (inc c)] c)
11:15lazybot⇒ 4
11:15TimMcI mean... no! It is to explain what all those silly "all rights reserved" statements mean.
11:15justin_smithdumptruckman: not that the portion "c (inc c)" does not mutate c, it shadows it with a binding derived from the old one
11:15TimMcthis is the license those were referring to all along
11:15justin_smith*note
11:16luxbockdumptruckman: I just finished reading The Little Schemer and I thought it was great
11:16gfredericksTimMc: oh I see but now also you are personally famous
11:16TimMcas the author of that heavily used license?
11:16TimMcI guess so!
11:16gfrederickscongratulations
11:17gfredericks#lifehack
11:17luxbocknow I get to dive into The Reasoned Schemer next, core.logic here I come
11:19TimMcgfredericks: This joke is falling surprisingly flat. Maybe it will be funnier once there's a lawsuit. Lawsuits always make things funny.
11:19gfredericksTimMc: I think it's because I'm not a lawyer enough so it doesn't connect with me at a low enough level
11:20dumptruckmanthanks luxbock
11:25ShayanjmIf anyone happens to need a hexagonal circle packing implementation : https://github.com/AbleEng/hexpacker <shameless self plug>
11:25ShayanjmI also would love some code critiques. Still trying to learn how to write things more clojure-y
11:28TimMcgfredericks: Well, it is of course unenforceable, but I really like the ambiguity of the license's *own* copyright statement.
11:29TimMcAlso, I'm playing with the notion of "what does it mean to license something". Note how the GPL says you have to include the actual text, but some licenses say you can just link to them.
11:29TimMcand I think with some you can just say "available under such and such a license".
11:30justin_smiththe misunderstandings are numerous
11:31justin_smithsee for example people that make you click through gpl as if it were a eula (it isn't, it's a redistribution license)
11:38gfredericksthe numerous misunderstandings are why I don't lawyer very much
11:48kwladykahttp://www.purelyfunctional.tv/ - is it worth to pay? Somebody watched this?
11:49kwladykaor mayby you can recommend somethign more?
11:53TimMcgfredericks: that sounds like a good law-er
11:55gfredericksTimMc: no beating around the bush
12:42saik0Shayanjm: neat. you could eliminate the post-dedup operation by removing the circles on one of the edges
12:51sveriquick vote: multimethods or protocols?
12:51sverifor a storage abstraction
12:51justin_smithsveri: a protocol
12:52sveriseems like the protocol wins 1:0 :D
12:52sverijustin_smith: any reasons you prefer the protocol?
12:53justin_smithsveri: because it abstracts over multiple operations, and dispatches on type
12:53justin_smithboth of these describe the storage abstraction scenario
12:53justin_smith(at the very least you hve put and get)
12:53sveriah, right, multiple operations, so obvious, havn't thought of that, but yea
12:54justin_smithand you would have no reason to use any dispatch other than type
12:54sveri(inc justin_smith)
12:54lazybot⇒ 245
12:54justin_smithwhich means multimethods provide one detriment, and no benefits
12:56sverithank you very much
13:00aneusing Foo. requires me to import that class, how can i make Foo visible for using it in ->Foo?
13:00justin_smithane: ->Foo does not require import, it only needs require or use
13:01aneso to make Foo visible from namespace xyz, what's the way? adding [xyz :refer [Foo]] to require?
13:02justin_smithyou don't need Foo to be visible, you need ->Foo
13:02justin_smithFoo is not a thing you can require, it's a class
13:02justin_smith->Foo is a function, something you can require
13:03aneoh yeah
13:03anederp
13:06justin_smiththe whole namespace/var vs. package/class thing is a little weird - less simple than many things in clojure
13:07anei agree. it's a bit confusing, but less so than in other languages
13:08anewhat are the practical differences between Foo. and ->Foo?
13:08justin_smithane: ->Foo is first class, and can be accessed the same way you would any other var in the namespace
13:09justin_smithwhile Foo. is actually a reader macro expanding to (new Foo)
13:09justin_smithand needs import, or fully qualified package name, to access it
13:09justin_smithand cannot be used first class
13:41gfredericksalso cannot be tricked out in the same way as vars
14:29LewixHI guys
14:29Lewixhttps://gist.github.com/6ewis/48968c8d338a1e10424a
14:30LewixI don't understand this piece of code - I know what the output is but i find it difficult to follow the logic
14:30Lewixrecursion is a pain in the arse
14:31gfredericksso is nonstandard indentation :(
14:32gfrederickslooks like it just maps over the vector producing an output vector
14:33gfredericksit uses the first arg to keep track of the stuff it has yet to do, and the second arg to accumulate the output
14:43Lewixgfredericks: is it obvious to you cause it dont see it
14:43Lewixgfredericks: if it's empty it shows out which is []
14:44Lewixthe first time around* - if it's not empty it recall itself with two arguments?
14:45gfredericksyeah, it's moving things from the first arg to the second
14:46gfredericksthe mechanisms are first, rest, and conj
15:09Pokyhey sveri, how's the typed stuff going?
15:12saik0how does lighttable display lazy seqs?
15:13gfredericksnot sure how lighttable does it, but there's a *print-length* var or something that lets you automatically abridge things
15:16sveriPoky: hey there, I got it going, but after adding a lot of functions I did not keep them up to date, however, I finished the first release of closp-crud, the plugin that the typ things were for :-) And how does the scala stuff do for you?
15:20Pokynice. I see you're going for that github streak ;)
15:20PokyI'm almost done with scala.. trying to figure out ldap auth with mongodb all day today.
15:20sveriPoky: funny, yea, I wanted to try it out, it's interesting to stay motivated like that
15:21sveriouch, ldap :D
15:21sveriI never liked that, is it a requirement you have?
15:21sveriPoky: and btw. do you know that article: https://aphyr.com/posts/322-call-me-maybe-mongodb-stale-reads about mongodb?
15:21clojurebotHuh?
15:22Pokyyeah I tried that with github, but you need a concrete project in order to make it work.. like closp :D
15:23Pokyit's just for an assignment.. I need to secure the server and picked mongodb as the application running on it.. I really don't even know why ldap is part of it
15:23sveriHehe, I see
15:24PokyI don't even know what it's good for tbh. Like why do I need ldap for authentication over mongodb..
15:24Pokyjust another db for users over db
15:24sverildap is more like active directory than like a database
15:24sveriand it is widely used as a business / groups / user backend
15:26Pokycould be... as I said, I've never seen it before. I don't even know what I am doing. :D
15:27sveriPoky funny, I wish you good luck with that. I only managed once to get a ldap backend working for me and it was one of the most painful experiences and I said that in relation to the fact that I even had windows 3.1 running on my desktop some time ago :D
15:27sveri*say
15:29Pokywell that's encouraging isn't it :D I mean tutorial on monodb http://docs.mongodb.org/manual/tutorial/configure-ldap-sasl-openldap/ is really short. so it's probably my fault
15:29Pokydoesn't help that their repositories aren't working for the debian server I have running.. so I don't even know if I have the enterprise version that can do it.. ;D oh well, it'll get done. somehow. :D
15:29sveriOk, some motivation, the last time I tried ldap is like 8 to 10 years ago, so I guess things have become better and easier in between :D
15:30sverivirtual machines or better, docker will be your friend there. heck, maybe you find docker images for that
15:31Pokywell I've never touched mongodb, I've never seen ldap.. I guess I might as well add docker to the mix if I get desperate
15:32sveritake the docker tour on the website, it is really easy to get started with, on the other hand, you are right. two new technologies are usually one to much, adding a third won't make things easier
15:34Pokywell, I have to mongodb running OK. I have acess to ldap via some phpuglyadmin.. now I just need to figure out how to make them talk I think :)
15:34sveriok, then just do that
15:34sverino need for a third layer :D
15:34Pokybut docker is definitely on my list of things to play with. seems to be hot nowdays
15:35sveriPoky: it is and it does make things easier, but it has it's limits and they are pretty tight
15:39gfrederickslimits?
15:41dviramonteshi, anyone here using Figwheel with Quil.cljs ?
15:43sverigfredericks: well, it's a best practice to only run one service in one container, part of the reason is they replaced systemd by fakesystemd which makes it hard to run several services. You have to know in advance which ports you will have opened inside your container. Only some operating systems are supported as hosts / "guests", every user belonging to the docker group has basically root access, which is by design and maybe some mor
16:16gfrederickshmm; yeah.
16:52thatguyI'm passing a map to yessql for saving data. Any convenient way to get the correct keys out of the params map, into this "entity" map?
16:52thatguyThinking now just to have a list of the db keys in a var, that i could use to copy
16:53thatguyor is there a way to say, only copy keys that match the target map? i'm new, obviously
16:59tomjacktarget map?
16:59tomjack"only copy keys that match the target map" sounds like "only copy the keys I want to copy" to me
17:02tomjackin other words, please elaborate and/or give example input/outputs you want
17:09arohner,(doc select-keys)
17:09clojurebot"([map keyseq]); Returns a map containing only those entries in map whose key is in keys"
17:09arohnerthatguy: ^^ ?
17:22sohalt`Hi, I'm trying to get a ClojureScript REPL running and having no luck with both the node and the brepl one. (I used the lein mies template) The brepl one hangs and the node one gives me a "TypeError: Cannot read property 'call' of undefined"
17:23sohalt`Any ideas what I'm doing wrong?
17:23bbloom_sohalt`: are you trying to use the absolute latest version of cljs? seems like dnolen is actively changing the repl & there have been a few bugs/regressions/etc
17:26sohalt`bbloom_: I'm trying to use 0.0-2755 -- that's the one specified in the lein mies template. Not sure, whether it's the absolute latest.
17:27bbloom_that's a bit old, which is probably a good thing :-)
17:29sohalt`Oh, ok. I'll try a newer one. Also I noticed the node repl and brepl scripts in the mies template differ from what the quick-start page in the wiki says.
17:30bbloom_i couldn't get 3211 to work for me, but 3196 worked fine. dnolen hasn't popped up for me to bug him about it
17:30bbloom_i just changed the url to download the jar
17:30bbloom_cljs.jar is super easy to get started w/ compared to pretty much everything else
18:01slipsetI've got this thing in core.async which is causing me some head-ache
18:01slipsetthe code is here https://gist.github.com/slipset/7cf68e62d82fb50ae587
18:01slipsetMy expectation is that Even should only serve even customers, and Odd should only serve odd customers,
18:02slipsetbut a typical run of this ends up a mix of odds and evens for both Odd and Even.
18:07weavejesterbbloom_: Are you using 3211 with Clojure 1.7.0-beta1 or later?
18:08bbloom_weavejester: https://github.com/clojure/clojurescript/wiki/Quick-Start#clojurescript-compiler says "The standalone ClojureScript JAR comes bundled with Clojure 1.7.0-Beta1."
18:09weavejesterbbloom_: Ah :)
18:17sohalt`Hm, no luck with the jar (3211) aswell. The repl displays "Waiting for browser to connect ..." and then hangs
18:17sohalt`I'll try 3196
18:20sohalt`Yes! "cljs.user=>" Thanks!
18:25sohalt`Does anybody have a recommendation for a library to modify svg from clojurescript?
18:29thatguy(let [entity {:b 20 :c 30}
18:29thatguy req {:a 1 :b 2}]
18:29thatguy (merge
18:29thatguy entity
18:29thatguy (select-keys req (keys entity))))
18:30thatguyIf anyone cares, that's my solution from the help i got earlier. thx all
19:10tahmidHello guys
19:10tahmidI am trying lein-droid
19:10tahmidBut I can’t change the background color of my image-view
19:11tahmidIn java I can write imageView.setBackgroundColor( Color.parse(“FFFFFF”));
19:11tahmidBut I can’t import the color class
19:12tahmidHelp me please
19:12justin_smithtahmid: what is the full package of Color?
19:12tahmidandroid.graphics.Color
19:13justin_smithand what did your import look like?
19:13tahmid(import ‘[andorid.graphics.Color])
19:14justin_smith(import android.graphics.Color) or (import (android.graphics Color))
19:14justin_smithwait, I think that second one needs a '
19:15tahmidNope
19:15tahmidIt worked
19:15justin_smith,(import '(java.util UUID))
19:15tahmidthanks
19:15clojurebotjava.util.UUID
19:15justin_smithnp
19:15tahmid(import android.graphics.Color) worked
19:15tahmid(inc justin_smith)
19:15lazybot⇒ 246
19:15oddcullyalso this looks like a rather odd '
19:15justin_smithyeah, the second one is handy if you want multiple things from one package though
19:16justin_smithah!
19:16justin_smith,(import (java.net URL URI))
19:16clojurebotjava.net.URI
19:16tahmidnice
19:16justin_smithforgot that worked without the quote (works with it too though)
19:17tahmidshould I ever use vector like in the :require form
19:17justin_smithtahmid: vector vs. list are both accepted, but list is the first choice for import, vector is the first choice for require
19:17bitcycleHey all. I've got leiningen-2.5.0 installed via brew but lein plugin install compojure-app isn't working. :( Can someone tell me what I'm doing wrong?
19:18justin_smith"lein plugin install" is a thing with lein 2?
19:18tahmidlein new compojure Your_App_Name
19:19bitcyclejustin_smith: how would I install compojure-app project template?
19:19justin_smithyou don't install templates, you instantiate them
19:19justin_smithlike tahmid said
19:19bitcycleah, and how does the lein tool know where to get the templates?
19:19justin_smithfor actual plugins, you add them to your ~/.lein/profiles.clj or to your project.clj
19:20justin_smithbitcycle: it finds them the same way it finds any other library, it looks for packages called lein-template iirc
19:20weavejesterbitcycle: It looks for a project called <whatever>/lein-template in clojars.
19:20oddcullybitcycle: lein new --help
19:20bitcyclejustin_smith: I'm super new to the-JVM/clojure -- coming from Python/C++.
19:20bitcyclejustin_smith: just wondering about where the libs live out on the interwebs.
19:21justin_smithbitcycle: OK. I think you'll find clojure/lein super weird at first, but eventually grow to like it
19:21oddcullybitcycle: bitcycle ~/.m2 most of the time
19:21bitcycleoddcully: huh?
19:21justin_smithbitcycle: it uses repositories like clojars and maven-central and sonatype, then it caches them under your ~/.m2/repositories/
19:21oddcullybitcycle: bitcycle ~/.m2/repository to be exact
19:21bitcycleoddcully: m as in maven?
19:21weavejesterbitcycle: By default Leiningen has two Maven repositories it uses to find packages.
19:21oddcullybitcycle: m as in maven
19:21bitcycleAh.
19:22weavejesterbitcycle: Maven Central (https://search.maven.org/) and Clojars (https://clojars.org/)
19:22bitcycleOk. That makes more sense. Thanks for helping, guys.
19:22tahmidclojure for android is getting better and better
19:22weavejesterbitcycle: The ~/.m2 directory is where packages are locally cached.
19:22justin_smithtahmid: cool, that's good to hear
19:22justin_smithI have a 1.7 repl installed, but have only played with it briefly
19:23bitcycleweavejester: is there a well-known dependency repo on the interwebs similar to python package index (pypi)?
19:23oddcullybitcycle: mavencentral, jcenter
19:24justin_smithclojars.org also has an index to its packages
19:24oddcullybitcycle: clojars of course for clojure things
19:24bitcyclelol. clojars.
19:25weavejesterbitcycle: Maven Central is generally used for Java packages, Clojars is used for Clojure packages.
19:25bitcycleand I thought the Python community was cheezy with their names.
19:25justin_smithbitcycle: we have some super bad ones
19:25bitcycleweavejester: cool, cool.
19:25oddcullybitcycle: if you are on lein you can install the `plz` plugin, which makes adding new stuff really a nobrainer: lein new app; cd app; lein plz add instaparse
19:25justin_smithbitcycle: lazybot uses a lib called irclj
19:25bitcycleoddcully: doesn't adding a new lib simply mean updating the project file?
19:26oddcullybitcycle: sure, but you would have to get the version number first
19:26weavejesterbitcycle: "lein-plz" is just a plugin that automates the updating, IIRC
19:26weavejesterBut I tend to find it useful to start off doing things the "long way" before using shortcuts.
19:26justin_smithbitcycle: yes, it just updates the project.clj for you (finding latest stable version)
19:27bitcycleoddcully: shouldn't you _want_ to know the version you're pinning?
19:27bitcycle:)
19:27bitcycleI guess it does that for you. ...
19:27justin_smiththere is also pallet/alembic for updating your deps at runtime in a repl without restarting
19:27bitcycleNice.
19:27justin_smith(almebic.still/load-project) loads up any new deps
19:27oddcullybitcycle: at project start i gladly take the recent one. and even if not: saves my typing in the first place
19:28justin_smithalembic won't drop deps though, only add new ones
19:29oddcullybitcycle: i also have my mavensearch twoliner script. i am lazy! searching websites bores me to death. a pip/easy_install user should know the value of such tools ;)
19:29bitcyclefor sure. you guys are making it super easy and nice to get into clojure. Thanks for that. I'm prepping for a sysad role working with tomcat and what-not -- so I figured I would brush up on the jvm.
19:31bitcyclenot sarcastic, I promise.
19:31bitcycle:)
22:11brainproxyi'm getting a "call to static method invokeStaticMethod on clojure.lang.Reflector can't be resolved", related to invoking `lein run` when I have a *warn-on-reflection* set to true via :global-vars
22:12brainproxybut in my testing profile, I have it set to true also and made sure I'm not actually doing any reflection
22:20justin_smithhave you changed the version of your clojure dep recently? if so try lein clean
22:52arrdemAnyone know of a library function f which replaces all regex matches in a string s with f of the match?
22:57justin_smith,(clojure.string/replace "hello world" #"[^ ]+" (fn [s] (str s "ay")))
22:57clojurebot"helloay worlday"
22:57arrdemshit.
22:58justin_smithhiding in plain sight
22:58arrdemnow I just feel bad
22:59arrdemthere are even examples of that behavior on Grimoire
22:59arrdemokay I'll take it
23:02TEttinger(inc justin_smith)
23:02lazybot⇒ 247
23:02arrdem(inc justin_smith)
23:02lazybot⇒ 248
23:03justin_smith,(string/replace "hello world" #"[^ ]+" (fn [s] (str (subs s 1) (first s) "ay")))
23:03clojurebot#error{:cause "No such namespace: string", :via [{:type clojure.lang.Compiler$CompilerException, :message "java.lang.RuntimeException: No such namespace: string, compiling:(NO_SOURCE_PATH:0:0)", :at [clojure.lang.Compiler analyze "Compiler.java" 6543]} {:type java.lang.RuntimeException, :message "No such namespace: string", :at [clojure.lang.Util runtimeException "Util.java" 221]}], :trace [[cloju...
23:03TEttingerarrdem, was it you or gfredericks who did that amazing test.chuck regex generator?
23:03justin_smith,(clojure.string/replace "hello world" #"[^ ]+" (fn [s] (str (subs s 1) (first s) "ay"))) ; better pig latin
23:03clojurebot"ellohay orldway"
23:03justin_smithTEttinger: that was gfredericks
23:03justin_smithand that was a work of genius
23:04TEttingerarrdem makes the prancy pony that is grimoire, right
23:04TEttingerheh
23:04justin_smithand oxcart
23:05arrdemjustin_smith: currently using that <platform>::<ns>/<n> notation all over Grimoire
23:05justin_smithcool
23:05arrdemnow if you just use that in a markdown file somewhere it'll automagically generate the link and insert it
23:05justin_smithoh, nice
23:06TEttingerI am really looking forward to getting out of javaland. I've been writing lots of these gnarly heavily-mutable array- and map-based things for a game lib. I've written these before in clojure, most of them, and performance is uh a concern
23:06arrdemwould it be... presumptive to PR the clojure cookbook repo adding Grimoire links all over the place?
23:06arrdemjust an idea I had
23:23arrdemand it's working!
23:23justin_smithcool
23:23TEttingernice
23:23TEttingerthat was fast
23:24justin_smithamazon is now offering GaaS http://www.marketplace.org/topics/business/final-note/now-amazon-will-let-you-rent-goats
23:24arrdemahaha
23:26justin_smithactual link http://www.amazon.com/exec/obidos/ASIN/B00UBYDXXQ
23:28arrdemhum... so it sorta kinda works in that if you say clj::foo/bar it'll give you _a_ link to that but if you're on an old version now you don't want the link to the _newest_ version of that you want the link to _this_ version of that.
23:28arrdemsigh
23:39arrdemIs there a good way to do Maven package introspection?
23:40justin_smithhttp://eclipse.org/aether/ like what aether does?
23:41arrdemprobably
23:41justin_smitharrdem: maybe the Artifact class http://download.eclipse.org/aether/aether-core/1.0.1/apidocs/org/eclipse/aether/artifact/Artifact.html
23:42justin_smitharrdem: of course we have a nice clojure frontend to aether https://github.com/cemerick/pomegranate
23:43arrdemoh thank the Old Ones
23:43arrdem(inc justin_smith)
23:43lazybot⇒ 249
23:43arrdem(inc cemerick)
23:43lazybot⇒ 20
23:44arrdemhttps://www.dropbox.com/s/saonllz7zc0v9de/2015-04-25-224326_1185x1057_scrot.png?dl=0
23:45arrdemI'm thinking that I could probably try to tack artifact metadata into the Grimoire datastore and then resolve the "right" version of whatever def you refer to with a short name from that context.