2:04 kab3wm: I'm having an issue where I expect a string to be returned and am getting a string, but it's surrounded by double quotes and parentheses. I'm new to Clojure and having a hard time googling this problem. I assume this is something simple but no amount of (pr (fn)), etc are getting rid of the quotes and parantheses.
2:10 Scriptor: kab3wm: pastebin the code in question?
2:15 kab3wm: Scriptor: http://
2:16 I tried to explain the problem a bit in the paste, but for a bigger picture, I am trying to get clostache ( mustache templates for clojure ) working with Noir. It works, except when I try to get layouts working too.
2:34 stirfoo: found another quirk in the reader: 0777/1 => 777, not 511
2:34 ibdknox: kab3wm: use stencil instead of clostache
2:35 cemerick: redinger: ping
2:35 kab3wm: ibdknox: I will give it a shot, thank you
2:35 ibdknox: kab3wm: with mustache, I think it's also easier to do the header/footer pattern
2:36 it makes it pretty easy with the partial syntax {{> header.mustache}}
2:36 though what you're doing should work
2:37 the only thing is you don't want it to end up escaped, so you'd want to do {{{content}}} which tells mustache to put exactly what you give it in there
2:37 kab3wm: that sounds good too. I actually don't care how I do it, as long as I can get my content inbetween a layout :)
3:25 codemac: anyone here use overtone? I'm trying to get it set up on mac os x
3:25 I get the following whenever I run (use 'overtone.live)
5:00 espringe: I want to have a string, whose contents are '\0' and when I print it to console, it writes those two characters. So I need to escape the slash, so I create it with "\\0" -- and the repl will print it out as '\\0'. I can verify it works with: (count (str "\\0")) which returns 2 as expected. However, how do I now print it out, in such a way that it only prints out two characters, not 3
5:07 AimHere: espringe > I'm slightly confused, since (println "\\0") appears to do what you want
5:08 espringe: AimHere: It prints 3 characters to the repl '\' '\' '0'. Is it possible for it to only print 2?
5:08 AimHere: It prints two characters when I do it (three including the newline)
5:08 espringe: (I need that, so someone can copy and paste the results from the repl and use it)
5:08 AimHere: what version of clojure?
5:09 AimHere: 1.3
5:09 1.3.0
5:09 espringe: user> "\\0"
5:09 "\\0"
5:09 clojure 1.3 too
5:10 AimHere: Oh, well that's different.
5:11 When you return an object to the repl, then it gets printed as something which unambiguously identifies it, I think
5:11 I imagine that's related to (pr "\\0")
5:12 espringe: If I start a new repl, and first thing do "\\0" it prints '\\0'
5:13 I am using jdk 7, i wonder if that could be it
5:13 AimHere: Nah, I think what you've got is the correct behaviour
5:14 The repl is returning a string which is, in some sense, a , correct, representation of the object, so that if you feed it back to clojure, it should be able to recreate the object that was returned
5:15 You want the string that's "for public consumption", as (doc print) puts it
5:16 espringe: AimHere: Yeah, I can see its 'right' -- but it's not what I want. As the string I'm printing, is designed to be copy&pasted into another program
5:16 AimHere: ,(println "\\0")
5:16 clojurebot: #<ExecutionException java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Could not initialize class clojure.lang.RT>
5:16 AimHere: Well can you not use the 'print' and 'println' functions to spit out what you're after?
5:17 espringe: Hmm, yeah probably
5:17 I can work with this
5:18 AimHere: THere's probably more output commands that spit out the public prettyprinted version. Someone's probably got a two line repl hack that'll do it too
5:20 espringe: Oh btw, does anyone know if the cljs compile errors are better than the clojure ones? These ones make me want to set fire to my wrists
5:21 AimHere: I'd set fire to a kitten for a clojure stacktrace that mostly referred to the source file I'd just tried to run
5:23 espringe: Also, does any know how to stop emacs making a stupid ass .#myfile.clj file? When ever it gets created, lein can't compile the project, and I have to delete it
5:24 Note, the '.' at the start of that file. The normal backup #myfile.clj# is fine
5:24 it's the '.#myfile.clj' that asplodes things
5:25 AimHere: It usually goes away, if your file is saved and up to date
5:27 espringe: Can I tell it to put it somewhere else, it breaks my build and is increddible annoying
5:28 No offense to anyone, but when did this ever become an acceptable compile error:
5:28 "Unknown location:
5:28 error: java.lang.RuntimeException: java.lang.Exception: "
5:28 That's just ridiculous, I don't even get a line number. All I get is a stupid java exception
5:29 Clojure is cool and all, but I don't think I've used anything that's given half as bad errors
5:30 AimHere: http://
5:32 espringe: AimHere: Awesome
5:54 stirfoo: (int (first "\0")) => 0 ; \0 is the NUL character 0x0, specified as an octal escape.
7:03 djpowell: I remember there being a clojure library for COM interop; unfortunately, COM is impossible to google. Does anyone know what it is?
7:05 hmm, it was probably just this: http://
7:38 is there a way to download non-jar resources with lein? Eg, the DLLs for this project: http://
8:30 y3di: is everyone here at the conference?
8:30 this place is gonna be empty today
8:42 prasad: what is the simplest way of getting a sequence of files in a directory?
8:45 raek: prasad: use the .listFiles method of the File class
8:46 (.listFiles (io/file "some-directory"))
8:46 it returns an array, which you can treat like a seq
8:46 gtuckerkellogg: i feel like an idiot, but...
8:47 ,(clojure.string/split "01234" #"")
8:47 clojurebot: ["" "0" "1" "2" "3" ...]
8:48 gtuckerkellogg: is there a split that will get rid of the leading "" in the resultant vector?
8:48 Chousuke_: seq :P
8:48 ,(seq "foo")
8:48 clojurebot: (\f \o \o)
8:48 gtuckerkellogg: shit
8:48 Chousuke_: oh, I guess you have to map str as well if you need strings
8:48 raek: what does it mean to split a string with the empty string as the separator?
8:50 gtuckerkellogg: so because emptiness comes before the start of the string, it matches it?
8:51 Chousuke_: possibly
8:56 Bronsa: actually, you only need to map str
8:56 ,(map str "foo")
8:56 clojurebot: ("f" "o" "o")
12:51 gfredericks: why is my defrecord giving me a "Duplicate method name&signature in class file"?
13:04 romanandreg: ibdknox: are you there?
13:12 ibdknox: romanandreg: hey
13:12 romanandreg: ibdknox: hey, quick question about noir… what's the core difference btw a wrapper and middleware in noir.server.handler ns?
13:13 I realized they are both compojure middleware, but… there is something more, is it that wrappers add middleware on specific routes?
13:13 ibdknox: romanandreg: custom middleware gets applied to all routes, while a wrapper add it to a certain route
13:13 yep
13:14 romanandreg: ok… I'm adding some documentation to the noir.server.handler ns, would you like me to send a put request your way later in the day?
13:14 pull*
13:14 ibdknox: romanandreg: sure, but you shouldn't be using that directly
13:14 that ns is implementation detail
13:15 romanandreg: noir.server is the public side, and it is documented
13:15 romanandreg: ibdknox: yes… I just want to figure out the inner details of this functions, is more of learning experience rather than anything else
13:15 ibdknox: okidoke :)
13:16 romanandreg: ibdknox: great work btw… I didn't see the usage of binding in middleware like that
13:17 I didn't see before*
13:17 ibdknox: it's a useful pattern for making things specific to a request
13:22 romanandreg: ibdknox: yeah I see it as a way to do some sort of state monads without all the fuss… that's nice
13:24 gfredericks: why does implementing ISeq complain that the rest function doesn't exist?
13:25 romanandreg: ibdknox: oh, another quick question, what does the name variable "cur" stands for?
13:25 ibdknox: romanandreg: current
13:26 romanandreg: ibdknox: ok… so cur in parse-route, cur will be a compojure route right?
13:29 ibdknox: romanandreg: no that chain of things is dealing with a vector of params from defpage
13:32 technomancy: if anyone planning on attending my swarm coding talk would be up for helping facilitate a small group hacking together over SSH and emacs/vim, please let me know
13:32 could use a few volunteers
13:36 romanandreg: ibdknox: ok I see, I think I understand now… may I suggest probably changing the cur var for page-params?
13:36 Frozenlock: technomancy: I doubt I could be of any help. Your talk might be interesting though. Where will it be? Will it be uploaded?
13:36 ibdknox: romanandreg: it's only one, and it's not deterministic
13:37 romanandreg: technomancy: I saw over twitter that you saw tavisrudd speech driven development demo :-)
13:37 technomancy: Frozenlock: it'll be way around in the back room. it's pretty interactive; I don't think it would make a lot of sense recorded.
13:37 romanandreg: oh, have you seen it?
13:38 romanandreg: technomancy: I've been working with him here in Vancouver all clojure stuff, I couldn't go to the clj/west…
13:38 technomancy: oh, cool
13:39 yeah, it's a lot of fun to watch
13:39 Frozenlock: technomancy: with actual storage cost, everything is worth being recorded :)
13:39 Even me singing in the shower. Laaaalaaalaalalala laaaaaaa
13:39 romanandreg: technomancy: funny is when you pair program with him… he start talking his code words at you and you are having wtf moments all the time :-)
13:40 technomancy: romanandreg: "slap, twert"
13:41 romanandreg: ibdknox: uhmm, ok, well that was the best name I could think of besides cur, cur doesn't tell much even after seeing 3 other functions :-)
13:41 gfredericks: technomancy: got a working version of reconstitutible iterate
13:42 technomancy: gfredericks: no kidding? sweet
13:42 gist?
13:42 clojurebot: gist is paste
13:43 gfredericks: technomancy: yep, one sec
13:43 romanandreg: ibdknox: thanks for your help, cheers.
13:45 technomancy: can the swarm-coding be done remotely?
13:45 technomancy: is it just in place?
13:45 technomancy: romanandreg: my talk will be about doing it in a user group, but you could do it remotely for sure
13:46 romanandreg: technomancy: is that the normal thing you do in seajure?
13:46 gfredericks: technomancy: https://
13:46 technomancy: romanandreg: yeah
13:47 gfredericks: wild!
13:48 gfredericks: I don't know if there's any chance of it being too useful...but at least it was fun to write
14:05 justicefries: about to leave, but does anyone want beginningclojure.com?
14:05 PM me.
14:11 tmciver: Is there a standard way to remove newlines from the middle of a string or should I just do something like: ##(->> "The\nquick\nbrown\nfox." (re-seq #"\w+") (interpose " ") (apply str))
14:11 lazybot: ⇒ "The quick brown fox"
14:13 qbg: &(.replaceAll "The\nquick\nbrown\nfox." "\n" "")
14:13 lazybot: ⇒ "Thequickbrownfox."
14:13 qbg: &(.replaceAll "The\nquick\nbrown\nfox." "\w+" " ")
14:13 lazybot: java.lang.RuntimeException: Unsupported escape character: \w
14:13 qbg: &(.replaceAll "The\nquick\nbrown\nfox." "\\w+" " ")
14:13 lazybot: ⇒ " \n \n \n ."
14:13 Bronsa: ,(clojure.string/replace "The\nquick\nbrown\nfox." "\n" " ")
14:13 clojurebot: "The quick brown fox."
14:13 tmciver: qbg: very nice. Would that be considered the idiomatic way?
14:14 and Bronsa ;)
14:14 qbg: &(.replaceAll "The\nquick\nbrown\nfox." "\\s+" " ")
14:14 lazybot: ⇒ "The quick brown fox."
14:14 qbg: There we go :)
14:14 Lajla: ##"I worship his shadow"
14:14 Does it work like this ##"I worship his shadow"
14:14 Frozenlock: I don't see any add-to-list function. Should I write my own, or was it omitted by design?
14:14 Lajla: Baww
14:14 qbg: tmciver: It is really easy at least
14:15 tmciver: qbg: yes definitely. Good enough, thanks.
14:15 gfredericks: Frozenlock: you want to add to the end of a list specifically?
14:15 tmciver: ,(doc conj) ;; Frozenlock
14:15 clojurebot: "([coll x] [coll x & xs]); conj[oin]. Returns a new collection with the xs 'added'. (conj nil item) returns (item). The 'addition' may happen at different 'places' depending on the concrete type."
14:16 gfredericks: ,(conj [1 2 3] 8)
14:16 clojurebot: [1 2 3 8]
14:16 gfredericks: ,(conj '(1 2 3) 8)
14:16 clojurebot: (8 1 2 3)
14:16 tomoj: &(.replace "The\nquick\nbrown\nfox" "\n" " ")
14:16 lazybot: ⇒ "The quick brown fox"
14:16 tomoj: huh..
14:16 Frozenlock: Well, I'm looking for something like `append'. After, perhaps, `add-to-list'
14:16 tomoj: I apparently don't know what "All" means
14:17 gfredericks: Frozenlock: if you need to add at the end specifically you should probably use vectors with conj
14:17 (instead of lists)
14:17 qbg: .replace is for charsequences
14:17 .replaceAll gives you regex power
14:17 Frozenlock: Yes, but conj doesn't work very well with two vector or list.
14:17 tomoj: aha
14:17 Frozenlock: ,(conj [1 2 3] [4 5 6])
14:17 clojurebot: [1 2 3 [4 5 6]]
14:17 Bronsa: ,(concat [1 2 3] [4 5 6])
14:17 clojurebot: (1 2 3 4 5 ...)
14:17 gfredericks: ,(apply conj [1 2 3] [4 5 6])
14:18 clojurebot: [1 2 3 4 5 ...]
14:18 tmciver: qbg: but replaceAll doesn't seem to allow you to use \w
14:18 Frozenlock: Oh, concat :D
14:18 Thanks!
14:18 qbg: tmciver: How so?
14:18 Frozenlock: I was wondering if the absence of such a function was to discourage some practice.
14:18 qbg: It takes strings, you have to escape the \
14:18 tmciver: ,(.replaceAll "The\nquick\nbrown\nfox." "\w+" " ")
14:18 clojurebot: #<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: Unsupported escape character: \w>
14:19 qbg: ,(.replaceAll "The\nquick\nbrown\nfox." "\\w+" " ")
14:19 clojurebot: " \n \n \n ."
14:19 qbg: &"\\w+"
14:19 lazybot: ⇒ "\\w+"
14:19 gfredericks: Frozenlock: there's not a function to add to the end of a list because it's inefficient
14:19 tmciver: qbg: hmm, that's the opposite effect I was looking for.
14:20 qbg: ,(.replaceAll "The\nquick\nbrown\nfox." "\\s+" " ")
14:20 clojurebot: "The quick brown fox."
14:20 tmciver: qbg: Ahh, I have to review regexs; \w is word? \s is whitespace?
14:20 qbg: Yes
14:20 tmciver: got it. Thanks again.
14:21 qbg: I made that error above, if you didn't notice it
14:21 tmciver: Yeah, that's what threw me.
14:22 qbg: Just a little TDD :p
14:24 ,(.replaceAll "The\nquick\nbrown\nfox." (.toString #"\s+") " ")
14:24 clojurebot: "The quick brown fox."
14:24 tmciver: ,(.toString #"\s+")
14:24 clojurebot: "\\s+"
14:24 tmciver: interesting
14:24 a little verbose but good to know nonetheless.
14:38 tomoj: &(clojure.string/replace "The\nquick\nbrown\nfox." #"\s+" " ")
14:38 lazybot: ⇒ "The quick brown fox."
14:40 johnmn3: So I asked around a while back about good companies to go with for collecting money from my clients.
14:40 I ended up going with Google Checkout
14:40 big mistake
14:41 qbg: johnmn3: Get screwed or something?
14:41 johnmn3: they're doing audits over there, or something, and decided freeze my account until provide them with 4 documents
14:42 a company catalog or brocure, inventory receipts or supplier contact information, ID or proof of address, and a copy of my professional license
14:42 wtf?
14:42 and now they're holding on to a $1000.00 and until I prove x, y, z, they're not giving it to me.
14:43 and all these secondary requirements popped up /after/ the client paid.
14:43 foodoo: may I ask what your job is?
14:44 johnmn3: I just formed an LLC with my sister. I did some network administration remotely for a restaurant in NYC, which is what the 1000 is for.
14:45 tomoj: I guess wildly that there is no good company for small merchants
14:45 johnmn3: but the LLC is primarily geared toward building business-process automation solutions, using mostly clojure
16:03 jaley: can anyone enlighten me? what's with the -o and -e suffix naming convention in core.logic? this is apparently very difficult to google!
16:03 technomancy: it's a scheme thing IIUC
16:04 jaley: ohhhhh. it was driving me nuts while reading tutorials
16:07 llasram: jaley: core.logic is an implementation of a logic programming system developed in the book /The Reasoned Schemer/. My understanding is that the core.logic developers have opted to keep the API as close as possible to the one described there in order to ease portability of systems built on top of it, of which there is apparently at least one, and they do plan on tackling it
16:08 jaley: llasram: ah, just fond this: http://
16:08 llasram: Oh, nice. That makes it make even more sense. I was just about to say that I had no idea where the TRS names came from in the first place :-)
16:09 jaley: maaaaan... it needs to be explained on the core.logic wiki. it was like listening to someone give a presentation making a clicking noise at the end of each sentence
16:10 i thought the author was pig-latinising the function names or something
16:12 ; (defn ondcay ...)
16:12 tomoj: I wonder why it was decided to stick with minikanren's names
16:13 technomancy: tomoj: I asked him on the mailing list
16:13 he was kind of evasive
16:14 tomoj: the second answer on that stackoverflow also suggests maybe we should just use ? since it's allowed here?
16:14 instead of 'o' I mean
16:15 oh
16:15 jaley: so what does the 'e' indicate?
16:15 tomoj: I didn't see your explanation llasram
16:15 makes sense if you've read that, I suppose
16:20 dnolen: llasram: I have a feeling ideas will flow in both directions between Clojure and Scheme implementations in the future. Just because people find it unfamiliar isn't a compelling reason to change thigns.
16:21 tomoj: ? communicates predicate, relations aren't boolean.
16:22 tomoj: ah, right
16:23 they aren't boolean?
16:23 dnolen: technomancy: I didn't think my answer was that evasive :)
16:23 tomoj: nope
16:24 jaley: it's not a Scheme thing really. It's a miniKanren thing.
16:25 tomoj: what does it mean that relations aren't boolean?
16:26 dnolen: tomoj: precisely that. they don't even return usuable values in the normal sense.
16:32 jaley: dnolen: just found section 1.5 of byrd :-)
16:32 dnolen: jaley: byrd's thesis is an excellent read
16:33 jonasen: dnolen: https://
16:33 jaley: dnolen: if i'm the first person to say, "what's with the Os!?", then maybe it's no big deal, but I feel the tutorial could use a short FYI at the start. some people are easily distracted :-)
16:36 dnolen: jaley: I agree, I think the tutorial could have a note - and then at the end provide an advanced example of how you can mixing FP w/ LP for those people that are still skeptical about the convention.
16:37 jonasen: I see where you going ... thinking about it.
16:37 jaley: dnolen: yeah.. personally I don't object to the convention, just wondered what i was missing
16:37 jonasen: dnolen: I'm sure there are better ways to do this.
16:38 jaley: dnolen: if I presented some code to some group with "-zomg" affixed to every function name, I wonder how long until a hand is raised
16:38 dnolen: jaley: yes, tho I'm not sure how many times I have to say they're not useful functions outside of run/run*
16:39 jaley: dnolen: probably for as long as it's the first thing people read?
16:40 dnolen: jaley: like I said, I'm all for brief note and a justification.
16:48 https://
16:49 true_droid: I'm curious, how did core.logic take off in CLojure? was it something people were interested in but had no support in other languages since Prolog
16:49 or it just appeared and then people got interested?
16:50 Raynes: Probably the latter.
16:51 dnolen: true_droid: it started off as an experiment to see if I could make miniKanren run faster under Clojure than Scheme. I presented it at a Clojure NYC meetup and rhickey liked it and suggested it get moved into contrib.
16:51 TheBusby: embrace and extend hopefully :)
16:52 TimMc: true_droid: You cannot in the general case explain the popularity of languages or libraries in satisfying ways.
16:52 It comes down to a well-written blog-post here, a nice build tool there...
16:52 true_droid: :)
16:52 ok, thanks for the info!
16:53 dnolen: true_droid: I also wouldn't say that core.logic is particularly popular as far a Clojure libs go :) people find it interesting but we're all still figuring it out.
16:54 true_droid: dnolen: I have a rather superficial interest in CLojure, but this one library is the one I hear most about
16:54 dnolen: true_droid: rest assured, it is not even remotely the most interesting thing about Clojure ;)
16:56 TimMc: true_droid: In this case, dnolen is a badass, so people were curious. :-)
16:56 true_droid: TimMc: Oh, I see
16:56 TimMc: (That's my story and I'm sticking with it.)
16:56 dnolen: :P
16:57 true_droid: dnolen: btw, I loved your post on abstraction in ClojureScript vs CoffeeScript
16:57 TimMc: It's really as good a reason as any.
16:57 dnolen: true_droid: that was fun post, I was surprised by the response.
16:57 true_droid: I can't convince my friends that it's useful yet, but it's definitely cool :)
16:58 dnolen: true_droid: welcome to the club :)
16:59 true_droid: dnolen: thanks! :)
17:01 btw, I live in Ukraine
17:02 it's kind of sad that all the cool events in programming are happening in the US mostly
17:02 too far :(
17:07 ChibaPet: true_droid: ILC's in Japan this year, isn't it?
17:07 Yeah, Kyoto.
17:07 dnolen: true_droid: what about EuroClojure?
17:07 ChibaPet: Look at some of the events here: http://
17:07 jaley: dnolen: just saw the note - thanks! curiosity satisfied now :)
17:08 ChibaPet: Japan, Croatia, Russia, Denmark...
17:09 dnolen: refheap is cool
17:09 * Raynes explodes into rainbows
17:10 true_droid: Russia is more reachable, thanks for the links
17:18 Raynes: dnolen: Are you at C/W?
17:19 dnolen: Raynes: I'm not.
17:19 Raynes: Damn -- I was going to tell you to go tell people how cool refheap is.
17:19 dnolen: Raynes: haha :) I wish I could.
17:19 Raynes: I'm not there to represent.
17:20 <3
17:34 http://
17:35 DerGuteMoritz: what's the deal with my clojurescript program trying to load /deps.js?
17:35 aperiodic: i just told some people
17:35 i don't think the paid very much attention, though
17:36 DerGuteMoritz: aperiodic: are you replying to me?
17:37 Raynes: I'm guessing it was a response to my saying I wish I could be at clojure/west to represent refheap.
17:38 dnolen: DerGuteMoritz: aperiodic: that usually means there's something wrong w/ your compilation settings.
17:38 DerGuteMoritz: ah :-)
17:38 dnolen: I use cljsbuild with a pretty bare bones config - any hints what I could go after?
17:39 (lein-cljsbuild that is)
17:39 dnolen: DerGuteMoritz: https://
17:40 DerGuteMoritz: dnolen: yep, that looks almost exactly like my project.clj except I use clojure 1.3.0 and no compiler settings ... odd
17:41 I have set :output-to to a relative path to a directory above the project dir (i.e. starting with ".."); maybe that's the cause ... let me try
17:43 no dice :-(
17:43 note that the code actually works
17:44 it just does that extra request
17:44 dnolen: DerGuteMoritz: not sure then, I saw that error and then I changed my compiler settings around and I didn't see it anymore.
17:44 DerGuteMoritz: myterious
17:44 +s
17:44 :-)
17:44 dnolen: DerGuteMoritz: deps.js is something GClosure looks for.
17:45 DerGuteMoritz: let me try turning on simple optimizations like you do
17:45 yep, that helped
17:45 ok, not sure what to make from that :-)
17:47 dnolen: DerGuteMoritz: if you figure it out let me know :)
17:49 DerGuteMoritz: dnolen: will do, thanks a lot!
18:01 woohooo those lein-cljsbuild traces make me feel like having huffed too much node.js!
18:17 Frozenlock: Weird... I added [lacij "0.7.0-SNAPSHOT"] in my :dev-dependencies (leiningen), but I can't use it... (use 'lacij) throws an error.
18:17 And yes, I've- lein deps-
18:17 Is there any other way I should load this library?
18:18 tmciver: Frozenlock: the namespace you use is probably something else, like (use 'lacij.core)
18:20 Frozenlock: lacij, lacij.core, lacij.graph.core... none of them works.
18:20 Oh wait... do I need to start a new swank connection?
18:20 When I add a new dependency, that is.
18:21 qbg: yeah
18:22 irc2samus: hi guys! how can I call a Java class contructor that takes a variable list of arguments? I thought (MyClass. "arg1" "arg2") would be ok
18:22 qbg: You mean varargs?
18:22 You need to box them in an array
18:23 irc2samus: like (MyClass. ["arg1" "arg2"]) or a Java array?
18:23 qbg: Java array
18:23 irc2samus: ok I'll try that thanks
18:23 qbg: into-array should prove useful
18:24 amalloy: i usually use into-array, but doesn't ##(doc make-array) work as well?
18:24 lazybot: ⇒ "([type len] [type dim & more-dims]); Creates and returns an array of instances of the specified class of the specified dimension(s). Note that a class object is required. Class objects can be obtained by using their imported or fully-qualified name. Class objects f... https://
18:24 amalloy: ah. no, because it only takes lengths, not init items. thanks lazybot!
18:25 raek: then there's 'to-array' and 'object-array' too...
18:27 irc2samus: I just tried to-array but it returns an array of Object, can I tell it to create an array of String?
18:27 dnolen: improving kibit https://
18:28 raek: irc2samus: I think you need to use into-array in that case
18:28 (into-array String ...collection-of-elements...)
18:30 irc2samus: ah great, perfect thanks
18:32 qbg: dnolen: Nice.
18:36 dnolen: Is there a reason why in core.logic (run* [q] (fresh [a b] (== #{a b} #{1 2}) (== [a b] q))) should only produce one result?
18:36 mdeboard: So, I have watched Simple Made Easy several times, and this talk from PyCon 2012, while not as entertaining nor confidently delivered as rhickey's, is definitely in the same spirit. http://
18:36 qbg: (other than sets being tricky)
18:37 dnolen: qbg: unification doesn't create more than result. only conde does.
18:37 more than one
18:43 irc2samus: it seems to be the case but I'll just ask to be sure, is seq usable as a java List?
18:44 qbg: not all seqs
18:44 dnolen: ,(bases '())
18:44 clojurebot: #<ClassCastException java.lang.ClassCastException: clojure.lang.PersistentList$EmptyList cannot be cast to java.lang.Class>
18:44 irc2samus: (seq ["foo" "bar"]) for List<String>
18:44 dnolen: ,(bases (class '()))
18:44 clojurebot: (clojure.lang.Obj clojure.lang.IPersistentList java.util.List clojure.lang.ISeq clojure.lang.Counted)
18:45 raek: ,(bases (class (lazy-seq nil)))
18:45 qbg: ,(bases (class (range)))
18:46 &(bases (class (range)))
18:46 lazybot: ⇒ (clojure.lang.Obj clojure.lang.ISeq clojure.lang.Sequential java.util.List clojure.lang.IPending)
18:46 clojurebot: (clojure.lang.Obj clojure.lang.ISeq clojure.lang.Sequential java.util.List clojure.lang.IPending ...)
18:46 (clojure.lang.Obj clojure.lang.ISeq clojure.lang.Sequential java.util.List clojure.lang.IPending ...)
18:47 qbg: Interesting
18:47 (.size (range))
18:47 &(.size (range))
18:47 lazybot: Execution Timed Out!
18:49 qbg: &(bases clojure.lang.ISeq)
18:49 lazybot: ⇒ #<Class[] [Ljava.lang.Class;@a9b899>
18:50 qbg: &(ancestors clojure.lang.ISeq)
18:50 lazybot: ⇒ #{clojure.lang.Seqable clojure.lang.IPersistentCollection}
19:42 hhutch: i'm new-ish to emacs/clojure-mode .. is there a way to do the equivalent of M-( and M-" with vectors and maps ?
19:47 irc2samus: guys how can I combine two (finite) sequences into a sequence of pairs? it seems clojure.zip isn't like python's zip
19:47 TimMc: ~zip
19:47 clojurebot: zip is not necessary in clojure, because map can walk over multiple sequences, acting as a zipWith. For example, (map list '(1 2 3) '(a b c)) yields ((1 a) (2 b) (3 c))
19:48 irc2samus: ah great, thanks :)
19:48 TimMc: That'll works for infinite sequences too.
20:02 technomancy: hhutch: paredit does that and a lot more
20:07 irc2samus: the last one (I hope) how can I create a sequence from a java Iterator? seq seems to work with Iterable only
20:09 TimMc: A lazy seq?
20:10 I think iterators generally have a toList method, yeah? That gives you something seqable.
20:11 qbg: &(doc iterator-seq)
20:11 lazybot: ⇒ "([iter]); Returns a seq on a java.util.Iterator. Note that most collections providing iterators implement Iterable and thus support seq directly."
20:11 TimMc: Weird, why is that not part of seq?
20:12 qbg: No clue
20:12 Ah, actually
20:12 iterators are single use
20:12 TimMc: Oooh, fair point.
20:13 seq only provides views onto things
20:14 irc2samus: yeah I have that but I'm writing a test and I'd like to go over both methods
20:14 in case you're curious I'm writing a test for https://
20:15 so it seems that with lazy-seq I need to implement the iteration mechanism, sort of
20:15 is this required to be infinte? I don't see how to stop it
20:16 TimMc: irc2samus: nil
20:17 mishadoff: hello
20:18 irc2samus: iterator-seq made the trick
20:19 so TimMc if I were using lazy-seq it would end when I return nil? how can I make a sequence of nils then?
20:19 JorgeB: what's the idiomatic way to get from [ {:key [elem1 elem2]}, {:key [elem3 elem4]} ] to {:key [elem1 elem2 elem3 elem4]} ?
20:19 array of maps to map of arrays
20:20 technomancy: ,(merge-with concat [ {:key [elem1 elem2]}, {:key [elem3 elem4]} ])
20:20 JorgeB: merge-with?
20:20 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: elem1 in this context, compiling:(NO_SOURCE_PATH:0)>
20:20 JorgeB: :)
20:20 technomancy: oh noes!
20:22 JorgeB: thanks, I'll try that
20:28 TimMc: irc2samus: (cons nil ...) is different from nil
20:30 irc2samus: ahh I see, there you're continuing the sequence
20:30 thanks
20:40 bpr: I see an interesting discussion of integrating websockets with Ring (https://
20:42 weavejester: bpr: There were additional discussions. I think my current conclusion is that a websocket protocol would, in effect, need something different than Ring.
20:42 bpr: ok
20:42 weavejester: bpr: As HTTP and websockets are two different protocols, it doesn't make much sense to write a single interface for both.
20:43 bpr: esp. since HTTP is req/resp oriented and websockets are full-duplex streams
20:43 weavejester: bpr: Right :)
20:44 bpr: I have tried using Aleph, but it doesn't seem to work with Clojure 1.3.0. At least I think that's what the issue I'm seeing is.
20:45 * technomancy is using raw netty for streaming lines of JSON over HTTP
20:46 bpr: that's interesting
20:46 technomancy: it's like a page and a half of adapter code
20:47 bpr: is it available on github or somewhere? I haven't worked with Netty before.
20:48 mishadoff: Is any good interface for lucene in clojure?
20:48 tomoj: bpr: which version of aleph did you try?
20:48 bpr: 0.2.1-alpha1, 0.2.1-beta1, 0.2.1-beta2, 0.2.1-SNAPSHOT
20:48 technomancy: bpr: https://
20:48 bpr: nice, thanks technomancy
20:49 technomancy: sure
20:49 tomoj: where did you find 0.2.1-beta2?
20:49 technomancy: it's not production-hardened yet
20:49 whatever that means
20:49 tomoj: but, I thought 1.3 was supposed to work in 0.2.1-beta1
20:50 I still haven't ever tried it, though, afaik..
20:51 bpr: tomoj: yeah, that's what I thought too. When I do lein run (or clojure-jack-in) it doesn't seem to even finish the compile step.
20:52 tomoj, Actually you're right. I saw mention of 0.2.1-beta2 somewhere and lein wasn't able to find an artifact for it.
20:52 tomoj: it just hangs?
20:52 bpr: tomoj: yes
20:53 Aside from checking CPU usage to see if it's looping, I haven't poked around any deeper.
20:54 It's not looping btw. CPU usage was low.
20:58 https://
20:59 that's the project.clj and the main.clj
20:59 tomoj: strange
21:00 maybe it's a ring interop problem?
21:03 bpr: https://
21:03 rather, that doesn't work
21:03 tomoj: https://
21:03 bpr: this does: https://
21:03 actually, reverse that
21:03 1183 does work, and 1184 doesn't
21:04 tomoj: that is a demo of working websocket for me
21:04 dunno if it's the ring stuff or what..
21:08 I mean, the ring-specific aleph stuff :)
21:09 DragonMaster1337: Hiya.
21:09 bpr: tomoj, seems to work for me too
21:10 DragonMaster1337: Has anyone here had any problems with clojurescript one? I go into the root and run lein repl, then (go), this launches firefox, i type (js/alert "hello") but it doesnt get evaluated in the browser. Doesnt work doing starting from emacs either.
21:11 The app launches and works like it should.
21:11 No luck with navigating chrome to it either.
21:12 tomoj: bpr: maybe you should post on the aleph-lib google group if you haven't given up on aleph yet
21:13 good luck
21:22 pandeiro: so clojure-jack-in runs lein deps automatically?
21:24 ...i didn't realize i could jump straight in and skip that step, pretty cool
21:28 Frozenlock: Yay... just discovered why my counter wasn't working http://
21:28 (and I indeed looked for a setf command...)
21:44 yoklov: do people use clojure-project-mode?
21:45 i see it in marmalade...
21:45 actually never mind, it requires i use project mode, which i do not.
22:01 dabd: can i create a def outside of a namespace? I would like to add the ^dynamic declaration to a def in the clojure.contrib.duck-streams namespace.
22:06 gfredericks`: hmm
22:06 "creating a def" isn't what you're talking about, since the var already exists
22:07 you can probably just alter the metadata; I'm not 100% positive that will work, and even less positive that it won't be heavily frowned upon
22:09 but try (alter-meta! #'clojure.contrib.duck-streams/foo-bar assoc :dynamic true)
22:09 * gfredericks` goes off to try it himself
22:11 dabd: gfredericks: it didn't work
22:12 gfredericks`: yeah it looks like it doesn't even work within the same ns
22:12 so presumably the dynamicity is stored somewhere else and not changeable
22:12 static dynamicity :)
22:13 dabd so with-redefs doesn't work for what you're doing?
22:13 dabd: gfredericks: i don't know about with-redefs
22:13 going to look into doc
22:14 gfredericks`: dabd: it's for redeffing vars globally, rather than thread-locally
22:14 the vars don't have to be dynamic
22:15 dabd: gfredericks: works great! thanks
22:16 gfredericks`: &"w00p"
22:16 lazybot: ⇒ "w00p"
22:16 dabd: what i was trying to achieve was change the *default-encoding* used by read-lines function in that namespace. It assumes "UTF-8" but i'm trying to read an ISO-8859-15 file.
22:17 gfredericks`: oh this must be one of the libs that hasn't been updated for 1.3 yet
22:17 oh wait
22:17 duck-streams
22:17 dabd: use clojure.java.io instead
22:18 that's what duck-streams turned into
22:21 dabd: gfredericks: looks like it does not have a read-lines function
22:21 but it is ok
22:24 amalloy: dabd: just use ##(doc line-seq), and give it a reader that has the right encoding set
22:24 lazybot: ⇒ "([rdr]); Returns the lines of text from rdr as a lazy sequence of strings. rdr must implement java.io.BufferedReader."
22:29 gfredericks`: is there any resource that explains how binding conveyance works? i.e., under what circumstances it happens?
22:40 bpr: gfredericks`: what's binding conveyance?
22:41 pyninja: I'm having an issue with converting a unicode string to valid JSON: https://
22:41 g inserted at all?
22:42 I just realized you can't see it in the gist for some reason, but it's this character: 😊
22:45 ivan: pyninja: this looks like a bug in Clojure. It's encoding your character wrong. Not surprising, given that it's outside the BMP.
22:46 \u1f60a will be interpreted as \u1f60 a by everything
22:48 this is probably right:
22:48 mefesto: pyninja: what version of clojure/data.json are you using?
22:48 ivan: gah. I can't paste the snowman into my client
22:48 simplejson gives '"\\ud83d\\ude0a"'
22:48 mefesto: data.json 0.1.3 contains this commit which might be relevant: https://
22:49 pyninja: hm
22:50 well i'm using clojure 1.2.1
22:55 well, i upgraded to clojure 1.3.0 and i got the same thing
22:59 that commit does look like it should fix it, but how can i upgrade to the latest version of data.json itself?
22:59 mefesto: pyninja: are you using leiningen?
22:59 pyninja: oh i just realized that data.json doesn't come with clojure
22:59 yeah, all i have to do is change [org.clojure/data.json "0.1.0"]. heh
23:00 mefesto: dunno if it'll make a difference for you but the commit switched from (.charAt s i) to (Character/codePointAt s i)
23:00 tomoj: cheshire encodes it to "\"😊\"" fwiw
23:02 pyninja: hm, i didn't know about cheshire.